hello world

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

 

posted @ 2020-03-01 12:29  浩天四哥  阅读(306)  评论(0)    收藏  举报