今天学习了点shell中的循环部分,经常遇到一些脚本遇到根据条件进行判断(往往需要遍历或判断有点久的操作),当满足条件的时候才完成需要的操作。那么循环就用到了。
1,while do done:
while [ condition ] <==中括号内的状态就是判断式
do <==do 是循环的开始!
程序段落
done <==done 是循环的结束
while 的中文是『当….时』,所以,这种方式说的是『
当 condition 条件成立时,就进行循环,直到 condition 的条件不成立才停止』
的意思。
一个简单的例子:
#!/bin/bash
# test while [] do done
while [ “$y” != “yes” -a “$y” != “YES” ]
do
read -p “please input yes or YES to stop this program:” y
done
echo “haha”
当输入yes或者YES的时候就满足条件了,这个时候循环就终止。如果不是这两个值,就一直循环要求提示输入。
until do done:
until [ condition ]
do
程序段落
done
它说的是『
当 condition 条件成立时,就终止循环, 否则就持续进行循环的程序段。』
下边下一个简单的例子:
#!/bin/bash
until [ “$yn” == “yes” -o “$yn” == “YES” ]
do
read -p “Please input yes/YES to stop this program: ” yn
done
echo “OK! you input the correct answer.”
2,for…do…done var是一个变量,后边是一个内容集群。
for $var in [list] do statments done |
理解:
for var in con1 con2 con3 …
do
程序段
done
这个 $var 的变量内容在回圈工作时:
- 第一次回圈时, $var 的内容为 con1 ;
- 第二次回圈时, $var 的内容为 con2 ;
- 第三次回圈时, $var 的内容为 con3 ;
- ….
一个简单的for例子:
#!/bin/bash
#test for do done
for day in zhouyi zhouer zhousan zhousi zhouwu zhouliu zhouri
do
echo “one week contains : $day”
done
执行结果:
[root@localhost ~]# ./for1.sh
one week contains : zhouyi
one week contains : zhouer
one week contains : zhousan
one week contains : zhousi
one week contains : zhouwu
one week contains : zhouliu
one week contains : zhouri
for 的另一种写法,这种方式应该很熟悉了,一开始接触c语言的时候就经常搞。
for (( 初始值; 限制值; 运行步阶 )) do 程序段 done |
这种语法适用于数值方式的运算当中,在 for 后面的括号内的三串内容意义为:
- 初始值:某个变量在回圈当中的起始值,直接以类似 i=1 配置好;
- 限制值:当变量的值在这个限制值的范围内,就继续进行回圈。例如 i<=100;
- 运行步阶:每作一次回圈时,变量的变化量。例如 i=i+1。
下边一个简单的例子理解下:
#!/bin/bash
s=0
for ((i=0; i<=100; i=i+1))
do
s =$(($s +$i))
done
echo “1+2+….+ $i:=” $s
转载请注明:西数超哥博客www.ysidc.top» 【原创】shell学习笔记第五天(循环)
https://www.ysidc.top 西数超哥博客,数据库,西数超哥,虚拟主机,域名注册,域名,云服务器,云主机,云建站,ysidc.top