shell-8-循环语句

简介:

for 循环用于重复整个对象列表,依次执行每个独立对象的循环内容,对象可以是命令行参数,文件名,或者任何以列表格式建立的东西。
格式 
for variable in list
do 
command
done

[root@master ~]# for i in 1 2 3;do echo $i;done           #命令行参数
1
2
3
[root@master ~]# for i in /etc/ssh/*;do echo $i;done      #文件名
/etc/ssh/moduli
/etc/ssh/ssh_config
[root@master ~]# for i in $(seq 3);do echo $i;done        #列表格式之一
1
2
3
[root@master ~]# for((i=1;i<=3;i++));do echo $i;done      #“(())”双括号语法扩展
1
2
3

#for循环该后缀名

for i in ./* ;do echo $i;mv $i $i.jpg;done
./Img_00063.JPG
./Img_00064.JPG
./Img_00065.JPG
./Img_00066.JPG
./Img_00067.JPG
./Img_00068.JPG
./Img_00069.JPG
./Img_00070.JPG
./Img_00071.JPG
./Img_00072.JPG
./Img_00073.JPG
./Img_00074.JPG
./Img_00075.JPG
./Img_00076.JPG
administrator@administrator-laptop:/mnt/isolinux/img/r610$ ls
Img_00063.JPG.jpg  Img_00067.JPG.jpg  Img_00071.JPG.jpg  Img_00075.JPG.jpg
Img_00064.JPG.jpg  Img_00068.JPG.jpg  Img_00072.JPG.jpg  Img_00076.JPG.jpg
Img_00065.JPG.jpg  Img_00069.JPG.jpg  Img_00073.JPG.jpg
Img_00066.JPG.jpg  Img_00070.JPG.jpg  Img_00074.JPG.jpg

#找到*.sh文件,并去掉可执行权限!

for i in `find /data -type f -name "*\.sh"`; do chmod -x $i; done


while 循环
格式
while 条件退出状态为成功,执行循环
do
条件表达式
....
done


l_dir=/root/sh
while read line;do
l_time=`date +'%Y-%m-%d %H:%M:%S'`
    echo $line
    echo "###$l_time" >>"$l_dir/ok" 
    rsync -avz  $line dongnan@192.168.5.82::svn/ --password-file="$l_dir/passwd" 2>>"$l_dir/err" 1>>"$l_dir/ok"
    sleep 2
done < "$l_dir/dir"                       #读取文件中的行

 


[root@master ~]# i=3                                            #条件变量应该在循环体外部
[root@master ~]# while [ $i -ge 1 ];do echo $i;((i--));done    
3
2
1
[root@master ~]# i=1
[root@master ~]# while ((i<=3));do echo $i;((i++)); done        #“(())”双括号语法扩展
1
2
3
[root@master ~]# i=1
[root@master ~]# while true;do if [ $i -gt 3 ];then break;fi;echo $i;((i++));done  #true 用于无限循环
1                                                                                  #break 用于退出循环
2
3

until 循环 与 while 循环相反
格式
until 条件退出状态为失败,执行循环
do
条件表达式
....
done

[root@master ~]# i=1                                                               
[root@master ~]# until [ $i -eq 5 ];do ((i++));if [ $i -eq 2 -o $i -eq 4 ];then continue;fi;echo $i;done
3                                                          #continue 用于跳出本次循环,提前执行下一个循环操作
5

跳出循环
break 与 continue 区别
break 直接退出循环体,可以指定一个数值参数,用于退出第几层循环体,比如 break 2 退出两个循环体
continue 跳出本次循环,而不是退出循环体,提前执行下一次的循环操作。



本文转自 dongnan 51CTO博客,原文链接: 

http://blog.51cto.com/dngood/619273


相关文章
|
存储 运维 Shell
shell中for while until 三种循环的用法
shell编程中,有几种常见的循环结构,包括for循环、while循环和until循环,总的来说,循环shell编程中扮演着至关重要的角色,它们使得自动化任务变得更加容易,提高了效率,并且可以处理各种各样的编程需求。
715 13
shell中for while until 三种循环的用法
|
人工智能 机器人 Shell
【shell】shell条件判断、循环语句、基本运算符
【shell】shell条件判断、循环语句、基本运算符
|
Shell
在Shell脚本中,`for`循环
在Shell脚本中,`for`循环
274 2
|
Shell 测试技术 Linux
Shell 脚本循环遍历日志文件中的值进行求和并计算平均值,最大值和最小值
Shell 脚本循环遍历日志文件中的值进行求和并计算平均值,最大值和最小值
353 3
|
Shell UED Python
Shell 循环语句:重复任务的自动化利器
在Shell脚本中,循环语句如`while`和`for`是自动化任务的关键。`while`循环在条件满足时执行,例如计算1到100的和;`for-in`循环遍历列表,可用于迭代指定数值或命令输出,如求1到100的和。`select-in`循环提供交互式菜单,增强脚本用户体验。理解并运用这些循环能提升脚本效率和可读性。现在,动手试试吧!
226 2
|
Shell Linux
shell循环读文件 Linux脚本读文件
shell循环读文件 Linux脚本读文件
182 3
|
机器学习/深度学习 Shell Linux
linux shell脚本判断文件或文件夹是否存在循环操作
linux shell脚本判断文件或文件夹是否存在循环操作
741 0
|
机器学习/深度学习 Shell Perl
shell 脚本循环语句
shell 脚本循环语句
|
Shell
shell脚本for循环复杂用法
shell脚本for循环复杂用法
420 5
|
算法 Shell Linux
Linux的shell命令——判断与循环
Linux的shell命令——判断与循环
259 1
下一篇
开通oss服务