shell编程 之 流程控制(条件语句和循环语句)
Posted 0点0度
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell编程 之 流程控制(条件语句和循环语句)相关的知识,希望对你有一定的参考价值。
1 if ...else...
基本格式:
if condition
then
commend
else
commend
fi
当然也可以写到一行,用[ ]表明边界,用;表示分行。比如: if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi 判断条件用方括号括起来表示分界,意思是统计当下进程中
带’ssh‘的字符串数量,如果这个数量大于1,那就输出true,结束。
还有带elif的格式,如下:
if condition
then
commend
elif condition1
then
commend1
else
commend2
fi
实例:
a=10 b=20 if [ $a == $b ] #此处方括号和内部的内容之间必须有空格 then echo "a 等于 b" elif [ $a -gt $b ] #这种写法也可以改写成test $a -gt $b then echo "a 大于 b" elif [ $a -lt $b ] then echo "a 小于 b" else echo "没有符合的条件" fi #注意,c=[ $a -lt $b ];echo $c 得不到任何输出值,它不和python一样,true和false不能被打印出来,实在是想试试的话,可以用[ $a -lt $b ] && echo hehe(||)也行(得到hehe就表示前面是ture) a=1 b=2 [ $a -lt $b ] && echo hehe1 #且,第一个为true的话,第二个仍需判断,这样才能知道总体是true还是false [ $a -gt $b ] || echo hehe2 #或,第一个是true的话,第二个不用执行就能得到总体的返回值是true
2 for循环
基本格式:for i in item1 item2
do
commend
done
写成一行的时候仍然是分号隔开:for i in item1 item2; do commend; done
实例:
for loop in 1 2 3 4 5 do echo "The value is: $loop" done #结果是 #The value is:1 #The value is:2 ...一直到5
有一点得注意,for i in " a string",输出的i将会是:a string,这里和python不一样,这里不会把字母一个一个拆开迭代。
3 while循环
只要符合条件就一直执行。一般格式为:
while condition #condition 不写,或者写true,就可以导致无限循环。
do
commend
done$
实例; #得到的输出是1,2,3,4,5,let用于计算多个表达式,不需要加上变量指示符号$,自加操作:let no++ ,自减操作:let no-- 。简写形式 let no+=10,let no-=20,分别等同于 let no=no+10,let no=no-20。
int=1 while(( $int<=5 )) #写成:[ $int -le 5 ]也行 do echo $int let "int++" done
4 until循环
一直循环到有一个ture为止。和wihile正好相反
untill condition
do
commend
done
实例:
a=0 until [ ! $a -lt 10 ] #除非a大于等于10否则一直运行 do echo $a a=`expr $a + 1` done
5 多选择语句
就是在多个语句中选一个,注意引号,换行。
实例:
aNum=3 case $aNum in #变量aNum可以是数字或者字符串abc等 1) echo ‘你选择了 1‘ ;; #俩分号 2) echo ‘你选择了 2‘ ;; 3) echo ‘你选择了 3‘ ;; 4) echo ‘你选择了 4‘ ;; *) echo ‘你没有输入 1 到 4 之间的数字‘ ;; esac #esca是反过来的
6 跳出循环
break命令跳出所有循环。
实例:
while : do echo -n "输入 1 到 5 之间的数字:" read aNum case $aNum in 1|2|3|4|5) echo "你输入的数字为 $aNum!" ;; *) echo "你输入的数字不是 1 到 5 之间的! 游戏结束" #*表示除了12345以外的其他情况 break #直接跳出并且终止这个程序 ;; esac done
continue 跳出这一层循环
实例:
while : do echo -n "输入 1 到 5 之间的数字: " read aNum case $aNum in 1|2|3|4|5) echo "你输入的数字为 $aNum!" ;; *) echo "你输入的数字不是 1 到 5 之间的!" continue #如果输入的值不是1-5之间的数,contiuune会直接调到” echo -n “输入1到5之间的数字” echo "游戏结束" ;; esac done
以上是关于shell编程 之 流程控制(条件语句和循环语句)的主要内容,如果未能解决你的问题,请参考以下文章
Shell编程Shell中for循环while循环until循环语句
Shell编程Shell中for循环while循环until循环语句
Linux实操篇—— Shell 编程入门变量运算符条件判断流程控制