shell学习笔记之六——流程控制
-
流程控制
if-else
if condition then command1 command2 ... commandN else command fi #可以写成一行 if [
$(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi #适用于终端cmd if-elseif-else
if condition1 then command1 elif condition2 then command2 else commandN fi #elif可以多次使用 #elif #then #elif #then #..
以上的conditihon可以使用
if [ $a -gt
或者$b ] if test $[n1] -gt
(其中$[n2] n1=$[2*3];n2=
这是计算的方法)$[1+5]; for循环
for var in item1 item2 ... itemN #可以使用两个括号: for((assign;condition;net))与C中类似,另外 do #使用两个圆括号的时候内部变量不需要加$,下面的while同理 command1 #循环体内要使用变量的话还是要
$ command2 ... commandN done #写成一行 for var in item1 item2 ... itemN; do command1; command2… done; #同样,适用于终端cmd #in列表可选,可以文件名或者字符串 #也可以使用命令 for file in $(ls /etc | grep -c "ssh") do cmd1 cmd2 done while循环
while condition do command done #比如如下 int=1 while(( int<=5 )) #这里也可以使用[
$int -le 5 ],这是上面for所说的两个圆括号,内部变量可以加$也可以不加 do #并且圆括号内的空格比较随意可加可不加 echo $int let "int++" done #let命令是linux中的,用于变量计算,变量计算中不用加$ #比如let n++ #let n-- #let n+=20等 #或者可以和其他的命令联合 echo '按下 <CTRL-D> 退出' echo -n '输入你最喜欢的网站名: ' while read FILM do echo "是的! $FILM 是一个好网站" done until循环
until condition do command done
case循环
case 值 in 模式1) command1 command2 ... commandN ;; 模式2) command1 command2 ... commandN ;; esac #比如 echo '输入 1 到 4 之间的数字:' echo '你输入的数字为:' read aNum case $aNum in 1) echo '你选择了 1' ;; 2) echo '你选择了 2' ;; 3) echo '你选择了 3' ;; 4) echo '你选择了 4' #还可以使用| : 1|2|3|4) ;; *) echo '你没有输入 1 到 4 之间的数字' ;; esac
break、continue
这两个运算符与C相同意义