-
Linux shell 使用for循环结构
2019-05-27 14:44:28本案例要求编写一个Shell脚本chkhosts.sh,利用for循环来检测多个主机的存活状态,相关要求及说明如下: 待检测的多个目标IP地址,存放在ipadds.txt文件内 ping检测可参考前一天的pinghost.sh脚本 脚本能遍历ping各...问题
本案例要求编写一个Shell脚本chkhosts.sh,利用for循环来检测多个主机的存活状态,相关要求及说明如下:
待检测的多个目标IP地址,存放在ipadds.txt文件内
ping检测可参考前一天的pinghost.sh脚本
脚本能遍历ping各主机,并反馈存活状态
执行检测脚本以后,反馈结果如图-1所示。
图-1
方案
在Shell脚本应用中,常见的for循环采用遍历式、列表式的执行流程,通过指定变量从值列表中循环赋值,每次复制后执行固定的一组操作。
for循环的语法结构如下所示:for 变量名 in 值列表 do 命令序列 done
步骤
实现此案例需要按照如下步骤进行。
步骤一:练习for循环基本用法
脚本1,循环输出“我来自 XX 。”,其中XX替换为指定的几个城市名:[root@svr5 ~]# vim for01.sh #!/bin/bash for i in "北京" "上海" "长沙" "香港" "台湾" do echo "我来自 $i 。" done [root@svr5 ~]# chmod +x for01.sh
脚本1的运行结果测试:
[root@svr5 ~]# ./for01.sh 我来自 北京 。 我来自 上海 。 我来自 长沙 。 我来自 香港 。 我来自 台湾 。
脚本2,列出Yum库中vsftpd、bind、httpd、mysql-server四个软件包的摘要描述信息(Summary行的描述文本):
[root@svr5 ~]# vim for02.sh #!/bin/bash for i in "vsftpd" "bind" "httpd" "mysql-server" do yum info $i | grep "^Summary" done [root@svr5 ~]# chmod +x for02.sh 脚本2的运行结果测试: [root@svr5 ~]# ./for02.sh Summary : Very Secure Ftp Daemon Summary : The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) Summary : Apache HTTP Server Summary : The MySQL server and related files
步骤二:批量检测多个主机的存活状态
1)任务需求及思路分析
已知IP地址存放在ipadds.txt文件内,那么可以采用“变量替换+for循环”的方式获取每一个IP地址;针对每一个IP地址执行ping检测,方法可参考上一章if选择示例中主机存活检测的方法。
比如,先确认(或建立)目标IP地址列表文件,能ping通、不能ping通的地址各添加几个,以方便测试:[root@svr5 ~]# vim /root/ipadds.txt 192.168.4.5 192.168.4.205 172.16.16.78 202.106.178.234
2)使用for循环整理实现思路
HLIST=从文件/root/ipadds获得IP地址列表 for IP地址 in 文件/root/ipadds中的一个地址 do ping IP地址 if [ 前一条命令ping通了 ] ; then 提示“此主机正在运行” else 提示“此主机已关闭或不存在” fi done
3)根据实现思路编写脚本
[root@svr5 ~]# vim chkhosts.sh #!/bin/bash HLIST=$(cat /root/ipadds.txt) for IP in $HLIST do ping -c 3 -i 0.2 -W 3 $IP &> /dev/null if [ $? -eq 0 ] ; then echo "Host $IP is up." else echo "Host $IP is down." fi done [root@svr5 ~]# chmod +x chkhosts.sh
4)测试、验证脚本
[root@svr5 ~]# ./chkhosts.sh Host 192.168.4.5 is up. Host 192.168.4.205 is up. Host 172.16.16.78 is down. Host 202.106.178.234 is down.
-
Windows和Linux脚本实现for循环批量
2019-12-26 12:14:511.windows平台的简单for循环 应用场景举例,git上面的项目很多,有几十个,不想一个一个去拉取,建立gitclone.bat脚本文件,内容如下 @echo off echo start git clone pause for /f %%i in (list.txt) do git ...1.windows平台的简单for循环
应用场景举例,git上面的项目很多,有几十个,不想一个一个去拉取,建立gitclone.bat脚本文件,内容如下
@echo off
echo start git clone
pause
for /f %%i in (list.txt) do git clone %%i
echo 'git clone finish!'
pause1)命令解释 echo off 即不显示命令本身,只显示执行的结果,加上@即连echo off 也不显示
2)echo 即输出字符串
3)for /f %%i in (list.txt) do git clone %%i
%%i为变量接受值,for xxx in 集合 do 这个是for循环基本接口,/f表示度取文件,默认按行读取,其他的读取规则参见
https://www.cnblogs.com/dongzhiquan/archive/2009/08/06/1994754.html do 后面是要执行的命令
4)pause 按任意键继续
5)list.txt文件内容如下
http://183.192.162.101:8089/microServicesV2/ability.git
http://183.192.162.101:8089/microServicesV2/app-management.git2.Linux平台的简单for循环
应用场景,在服务部署后需要批量的取初始化数据即需要多次请求一个接口,即可建立curlbat.sh
#!/bin/bash
log_file='result.log'
i=1
for line in `cat mgdbId.txt`;
do
echo "read line" $i ":" $line | tee -a $log_file
curl_cmd="curl http://localhost:8323/matchData/output?mgdbId=$line -v"
echo `date "+%Y-%m-%d %H:%M:%S"` "start ===>> " $curl_cmd | tee -a $log_file
eval "$curl_cmd 2>&1" | tee -a $log_file
echo `date "+%Y-%m-%d %H:%M:%S"` "end <<===" $curl_cmd | tee -a $log_filei=i+1
doneecho `date "+%Y-%m-%d %H:%M:%S"` "over: end of shell" | tee -a $log_file
1)#!/bin/bash shell脚本的固定格式,表示用/bin/bash来执行这个shell脚本,shell脚本的执行有好几种,bash是常见的Redhat系的linux系统中
2)log_file变量赋值 ,指定日志文件
3)i=1初始化i,记录第几行
4)for line in `cat mgdbId.txt`; do done为循环的基础格式
5)echo "read line" $i ":" $line | tee -a $log_file 其中echo 输出字符串 $line,$符为取变量的值
tee -a $log_file tee -a 附加到既有文件的后面,而非覆盖它.整句即为将命令的输出追加到日志文件
6) eval "$curl_cmd 2>&1" | tee -a $log_file eval即要执行的命令参数 2>&1 即将标准错误重定向到标准输出,也就是将命令的执行结果追加到result.log文件中。
-
Linux 使用for循环结构
2019-05-28 22:36:04本案例要求编写一个Shell脚本chkhosts.sh,利用for循环来检测多个主机的存活状态,相关要求及说明如下: 待检测的多个目标IP地址,存放在ipadds.txt文件内 ping检测可参考前一天的pinghost.sh脚本 脚本能遍历ping各...1.使用for循环结构
问题
本案例要求编写一个Shell脚本chkhosts.sh,利用for循环来检测多个主机的存活状态,相关要求及说明如下:
待检测的多个目标IP地址,存放在ipadds.txt文件内
ping检测可参考前一天的pinghost.sh脚本
脚本能遍历ping各主机,并反馈存活状态
执行检测脚本以后,反馈结果如图-1所示。
图-1
方案
在Shell脚本应用中,常见的for循环采用遍历式、列表式的执行流程,通过指定变量从值列表中循环赋值,每次复制后执行固定的一组操作。
for循环的语法结构如下所示:
for 变量名 in 值列表
do
命令序列
done
步骤
实现此案例需要按照如下步骤进行。
步骤一:练习for循环基本用法
脚本1,循环输出“我来自 XX 。”,其中XX替换为指定的几个城市名:
[root@svr5 ~]# vim for01.sh
#!/bin/bash
for i in “北京” “上海” “长沙” “香港” “台湾”
do
echo “我来自 $i 。”
done
[root@svr5 ~]# chmod +x for01.sh
脚本1的运行结果测试:
[root@svr5 ~]# ./for01.sh
我来自 北京 。
我来自 上海 。
我来自 长沙 。
我来自 香港 。
我来自 台湾 。
脚本2,列出Yum库中vsftpd、bind、httpd、mysql-server四个软件包的摘要描述信息(Summary行的描述文本):
[root@svr5 ~]# vim for02.sh
#!/bin/bash
for i in “vsftpd” “bind” “httpd” “mysql-server”
do
yum info KaTeX parse error: Expected 'EOF', got '#' at position 39: …e [root@svr5 ~]#̲ chmod +x for02…(cat /root/ipadds.txt)
for IP in $HLIST
do
ping -c 3 -i 0.2 -W 3 $IP &> /dev/null
if [ $? -eq 0 ] ; then
echo “Host $IP is up.”
else
echo “Host $IP is down.”
fi
done[root@svr5 ~]# chmod +x chkhosts.sh
4)测试、验证脚本
[root@svr5 ~]# ./chkhosts.sh
Host 192.168.4.5 is up.
Host 192.168.4.205 is up.
Host 172.16.16.78 is down.
Host 202.106.178.234 is down. -
LINUX 使用for循环结构
2019-06-04 07:44:57本案例要求编写一个Shell脚本chkhosts.sh,利用for循环来检测多个主机的存活状态,相关要求及说明如下: 待检测的多个目标IP地址,存放在ipadds.txt文件内 ping检测可参考前一天的pinghost.sh脚本 脚本能遍历ping各...问题
本案例要求编写一个Shell脚本chkhosts.sh,利用for循环来检测多个主机的存活状态,相关要求及说明如下:
待检测的多个目标IP地址,存放在ipadds.txt文件内
ping检测可参考前一天的pinghost.sh脚本
脚本能遍历ping各主机,并反馈存活状态
执行检测脚本以后,反馈结果如图-1所示。
图-1
方案
在Shell脚本应用中,常见的for循环采用遍历式、列表式的执行流程,通过指定变量从值列表中循环赋值,每次复制后执行固定的一组操作。
for循环的语法结构如下所示:for 变量名 in 值列表 do 命令序列 done
步骤
实现此案例需要按照如下步骤进行。
步骤一:练习for循环基本用法
脚本1,循环输出“我来自 XX 。”,其中XX替换为指定的几个城市名:[root@svr5 ~]# vim for01.sh #!/bin/bash for i in "北京" "上海" "长沙" "香港" "台湾" do echo "我来自 $i 。" done [root@svr5 ~]# chmod +x for01.sh
脚本1的运行结果测试:
[root@svr5 ~]# ./for01.sh 我来自 北京 。 我来自 上海 。 我来自 长沙 。 我来自 香港 。 我来自 台湾 。
脚本2,列出Yum库中vsftpd、bind、httpd、mysql-server四个软件包的摘要描述信息(Summary行的描述文本):
[root@svr5 ~]# vim for02.sh #!/bin/bash for i in "vsftpd" "bind" "httpd" "mysql-server" do yum info $i | grep "^Summary" done [root@svr5 ~]# chmod +x for02.sh
脚本2的运行结果测试:
[root@svr5 ~]# ./for02.sh Summary : Very Secure Ftp Daemon Summary : The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) Summary : Apache HTTP Server Summary : The MySQL server and related files
步骤二:批量检测多个主机的存活状态
1)任务需求及思路分析
已知IP地址存放在ipadds.txt文件内,那么可以采用“变量替换+for循环”的方式获取每一个IP地址;针对每一个IP地址执行ping检测,方法可参考上一章if选择示例中主机存活检测的方法。
比如,先确认(或建立)目标IP地址列表文件,能ping通、不能ping通的地址各添加几个,以方便测试:[root@svr5 ~]# vim /root/ipadds.txt 192.168.4.5 192.168.4.205 172.16.16.78 202.106.178.234
2)使用for循环整理实现思路
HLIST=从文件/root/ipadds获得IP地址列表 for IP地址 in 文件/root/ipadds中的一个地址 do ping IP地址 if [ 前一条命令ping通了 ] ; then 提示“此主机正在运行” else 提示“此主机已关闭或不存在” fi done
3)根据实现思路编写脚本
[root@svr5 ~]# vim chkhosts.sh #!/bin/bash HLIST=$(cat /root/ipadds.txt) for IP in $HLIST do ping -c 3 -i 0.2 -W 3 $IP &> /dev/null if [ $? -eq 0 ] ; then echo "Host $IP is up." else echo "Host $IP is down." fi done [root@svr5 ~]# chmod +x chkhosts.sh
4)测试、验证脚本
[root@svr5 ~]# ./chkhosts.sh Host 192.168.4.5 is up. Host 192.168.4.205 is up. Host 172.16.16.78 is down. Host 202.106.178.234 is down.
-
Linux openMP for循环并行编程实例
2020-03-16 11:08:53需要加omp.h这个库,编译的时候加-fopenmp参数: ...代码块里,如果要将for循环拆分多个线程执行,则在for循环前加#pragma omp parallel for #include <stdio.h> #include <omp.h> int main() { #pr... -
linux shell for循环解决递归循环目录结构
2016-03-02 20:11:24今天总结一下关于linux shell里的递归循环的问题起因是一个群友在群里的提问问的是怎么把有或多或少空目录的几个文件移动走的问题归根结底就是一个递归循环的问题如果之前接触过c语言之类的编程语言、那么这个很好... -
Linux Shell for 循环学习总结
2020-05-27 19:59:461 声明解析器 #!/bin/bash ... $* 代表输入多个参数 $1~$n 代表输入一到N个参数 $# 参数个数 $0 文件名本身 4 for 的几种写法 从sh 后读取多参数 #!/bin/bash for i in $* ; do echo $i; -
c++for循环语句_Linux运维:for/while/until/select循环语句的使用
2021-01-16 05:20:42for语句的语法格式1对变量的赋值通过在in后面直接赋值,多个赋值通过空格隔开:语法格式2则是首先通过初始化变量的值,也就是定义一个变量的初始值,然后通过运算修改变量的值,当结束循环的条件满足时,for循环结束... -
linux shell多个数组循环
2016-03-04 17:01:48#!/bin/bash arr1=(a b c d) ...for i in 1 2 do var="arr"$i"[@]" for j in ${!var} do echo $j done done 脚本如上! 说明: ${!var} 用于返回以var变量的值命名的变量的值 作用类 -
linux for循环脚本例子01
2020-08-18 10:18:45目的:在linux系统中创建多个普通用户,用户名来自user.txt liming zhangsan lisi wangwu hulu zhangji jina 设计思路:遍寻file文件中所有内容,并用useradd $var添加用户名为变量值的普通用户 #!/bin/bash ... -
linux for 循环的小应用
2019-09-27 22:45:09[root@localhost ~]# mkdir -pv /home/data{1..5} # 创建多个目录 以下两种方法类似。 for i in {1..5};do echo "<h3>test<h3>" > /home/data$i/index.html; done [root@localhost ~]# for i in $... -
linux for循环_C语言数组越界导致无限循环
2020-11-24 12:53:20关于抽奖看这篇文章《Linux进程管理数据结构》,以后也会不定期抽奖,今年多赚点钱,过年的时候,希望给大家抽一个大奖,喜欢的读者使劲给转发点赞,关注,未来是你们的,大奖也是你们的,感谢支持,不喜欢的请轻拍... -
for循环测试cpu_ntttcp-for-linux: 微软的网络吞吐量多线程基准测试工具 linux版
2020-12-25 15:35:28NTTTCP-for-Linux微软的网络吞吐量多线程基准测试工具 for linux版特征多个线程来发送/接收数据(“ -P”,“-n”和“ -l”)。默认情况下,Receiver('-r')使用16个线程,而Sender('-s')使用64个线程交换数据。支持cpu... -
linux结构化命令:for循环
2017-11-28 16:45:41for循环命令基本格式: for var in list do commonds done 测试脚本: 执行结果如下: 读取列表中的复杂值: 修改test3.sh如下,执行结果如下: 如上可以看到,第二次循环的时候... -
Linux系统shell编程for条件循环语句
2020-04-23 22:57:05for循环语句允许脚本一次性读取多个信息,然后逐一对信息进行操作处理,有点类似于python里面for循环遍历的概念,当要处理的数据有范围时用for语句再合适不过了。语法结构为 for 变量名 in 取值列表 do 命令序列 ... -
for循环下标 shell_linux shell 中数组的定义和for循环遍历的方法
2020-12-23 23:19:58linux shell中的语法和普通编程语言 c/c++ java 的不太一样,平时用的不多,所以总是记不住,写脚本才会去查怎么用。今天突然被问到数组怎么去遍历。平时写shell脚本也经常...linux 中定义一个数据的语法为:variabl... -
linux shell 编程 9 for 循环删除文件
2016-02-03 10:08:41一、删除多个文件 #!/bin/bash DATE=$(date -d '-1 month' +%Y%m%d) #DATE=20160104 #all file file1=autoimportdate.log file2=autoPubbjNews.log file3=autoPubdgNews.log file4=autoPublishDate.log file5=... -
for循环批量写文件 shell_如何在 Bash 中使用循环 | Linux 中国
2020-12-29 07:47:05使用循环和查找命令批量自动对多个文件进行一系列的操作。-- Seth Kenlon人们希望学习批处理命令的一个普遍原因是要得到批处理强大的功能。如果你希望批量的对文件执行一些指令,构造一个可以重复运行在那些文件上的... -
birt脚本for循环_面试Linux运维一定会问到Shell脚本的这24个问题
2020-11-26 11:16:31虽然现在Python在运维工作中已经使用很普遍,但是很多企业在找Linux云计算工程师的时候还是会问... 答:一个Shell脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务... -
Linux系统中Shell编程之case循环、for循环及While循环的实际使用
2019-09-24 13:41:31Shell编程之case语句与循环语句 case多分支语句 case语句的结构 针对变量的不同取值,分别执行不同的命令序列 case 变量值 in 模式 1) 命令序列 1 ;; 模式 2) 命令序列 2 ;; *) 默认命令序列 esac case... -
linux shell 中数组的定义和for循环遍历的方法
2021-01-20 16:27:19linux 中定义一个数据的语法为: variable=(arg1 arg2 arg3 ....) 中间用空格分开。数组的下标从0开始。 1 获取下标为n的元素: variable[n] 而且不存在数组下标溢出的情况,如果 n>= 数组的长 -
linux基本操作---shell编程 for循环(99乘法表)
2017-12-13 14:52:04linux中的for循环有很多用处:比如跑历史数据,参数为日期,那么我们可以把日期放入for循环中,循环把日期作为参数执行下面看一个我生产中用到的例子[zhangshk@fonova-app02 ~]$ cat nohup_run0_100.sh for i in {0... -
关于linux下 gcc 编译时for循环的报错。c99
2015-10-06 20:31:57今天写点程序,声明个人是小白 发现一个没有错的程序一直报错,百思不得其解。...意思是我的for循环形式只是在c99下是允许的 。 所以要修改一下我的for循环模式 c语言有很多标准 以前的标准不允许for(i -
linux shell 中数组的定义和for循环遍历
2017-04-25 20:00:43linux shell中的语法和普通编程语言 c/c++ java 的不太一样,平时用的不多,所以总是记不住,写脚本才会去查怎么用。今天突然被问到数组怎么去遍历。平时写shell脚本也经常遍历数组,...linux 中定义一个数据的语法为: -
python list remove多个_python for循环remove同一个list
2020-12-13 22:59:40下午在用python将Linux的conf配置文件转化成字典dict时遇到了一个奇怪的问题,原先conf配置文件中没有注释行(以#开头的行),后来为了避免这种情况,添加了一个对以#开头的行删除的操作。 实践结果颠覆了已有的认知,... -
LINUX 线程(三)循环创键多个子线程
2021-01-09 10:05:09int main() { int i ,ret; for(i = 0; i<N ;i++){ ret = pthread_create(&tid, NULL,tfn,NULL); if(ret!=0) perror(..); } }