第六章 流程控制

来源:互联网 发布:php ajax传值中文乱码 编辑:程序博客网 时间:2024/06/02 05:06

1、if/else语句

eg:

if [ $# -lt 2 ]   //参数个数小于2

then

exit 1

elif [ $# -gt 2 ]     //参数个数大于2

exit 1

fi

说明:

(1)、if/else语句语法格式(如果写一行)

if list1; then list; [elif list; then list;] ... [else list;] fi

(2)、二元操作

eg:  arg1 -lt arg2   // lt  less than

操作符
含义-eqequal to ,等于-nenot equal to ,不等于-leless than or equal to ,小于等于-gtgreater than,大于-gegreater than or equal to,大于等于

2、case语句

eg:case word in

   parameter1)

command-list1

;;

parameter2 )

;;

parameter3)

;;

*)

echo  "default"

;;

esac

( 备注: “;&” 和 “;;&” 如果被使用来终止语句,则shell会继续执行下一个句子中的command-list,直到遇到“;;” 。)

3、while循环

eg:

while [ "$IP" -lt "120" ]

do

echo  -en  "ping ${NETWORK}.${IP} ..."

ping  -cl  -wl  ${NETWORK}.${IP} > /dev/null  2 > &1

if [ "$?" -eq 0 ]

then

echo "ok"

else

echo "failed"

fi

let IP=${IP}+1

done

exit 0

4、until循环

4.1 shell 脚本不停地询问用户要执行什么操作,直到用户输入quit才会退出。

eg:

#!/bin/bash

QUIT_COMMAND=quit

until [ "$USER-INPUT" = "$QUIT_COMMAND" ]

do

 //直到输入quit才退出

done

exit 0

(备注:[ ] 中两个字符串比较:

  • -n STRING  //字符串长度为非0则返回真
  • -z  STRING  //字符串长度为0则返回真
  • STRING1 = STRING2   // 两字符串相同则返回真
  • STRING1  != STRING2   //两字符串不相同则返回真

*******shell的内建测试命令 [ 和 ] 的两侧需要空格。

5、for循环

5.1 、for 语句格式

for  name in word1 word2  ... wordn

do

  commands

done

//备注 第一次for循环时,for被设置为word1,第二次被设置为word2...

5.2、 shell 下c语言风格的for循环

  for (( p=0 ,k=1000;p<=10;p++,k-=12))

do

echo "i= $p",j=%k”

done

exit 0

//备注:在bash中单“(”变为 “((” ,变量的引用不再加前缀。

6、select循环

语法格式:

select name [ in words ... ]

do

commands

done

eg:  #!/bin/bash

select  dir in /bin  /etc  /ljh  quit

 do

if [ -n "$dir" ]

then

if [ "$dir" = "quit" ]

exit 0

fi

done

输出: 1)/bin   2)/etc   3)/ljh   4)quit

 #?

(备注:用户的输入会保存到$REPLY

echo "Press \"Enter\" directory to show menu again )"

//按下回车->和键盘同步

循环中默认的提示符是“#?”

可在 #!/bin/bash 后添加

PS3=“Please make a select >>”

7、break语句

break [n]    //从循环中退出,可以为for、while、until、select循环

如果没有指定n,则只结束最内层的循环

n:跳出第n层

eg:

if  ...

then

break 2;

fi

8、continue语句

continue[n]  //从包裹continue的for、while、until或select循环语句的第n层的循环语句的下一次迭代。


原创粉丝点击