Shell脚本编程中的几种流程控制语法
本文仅做结构书写示例,不做具体场景,注意,以下的条件判断不能直接用历代编程的a>1,B<10这种判断,要用命令返回或者test语句或者[ $a -gt 10 ]诸如此类的方式来得到结果。
[ number1 -operator number2 ] operator操作符有-eq(=),-ge(>=),-le(<=),-lt(<),-ne(!=)
1、if结构
if (command|condition);then
commands
....
fi
if (command|condition)
then
commands
....
fi
if (command|condition)
commands
else
commands
fi
if (command|condition);then
commands
elif (command|condition);then
commands
else
commands
fi
2、while循环
while (command|condition);do
commands
done
while : (直接就是死循环,等同于 while true,注意,while后面是一个空格和一个冒号)
do
commands
done
3、util循环
util (command|condition);do
commands
done
4、select case语句
case expression
case $USER in
admin | test)
echo 'Oh My GUN';;
user1) echo 'OH his GUN';;
*)
echo 'Nobody';;
esac
5、for循环
for ((i=1;i<=100;i++));do
echo $i
done
也可以在一行命令中执行:sum=0;for ((i=1;i<=100;i++)) { sum=$[$sum+$i]; } ; echo $sum
for i in `seq 1 100`;do
echo $i
done
for i in {1..10};do
echo $i
done
6、循环读文件
while 读文件
while read ok (每读一行,把这行放入变量ok中,常规写法是while read line,我把line改成了ok就是表明这个line本质就是一个变量)
do
echo $ok
done < /etc/passwd
while读标准输出
ifconfig | while read ok (和上面是一样的,格式是command | while read line,这个command不需要加反引号)
do
echo $ok
done
for读文件
IFS=$'\n' (告诉shell读的文件以换行为分割,默认是空格为分割,不然读到一行中有空格的,只会给你第一个空格之前的)
for i in `cat /etc/passwd`
do
echo $i
done
#done >2.txt 如果在done后面输出重定向,就不会在屏幕显示了,会输出到文件
技术交流QQ群:70539804

浙公网安备 33010602011771号