Shell脚本:流程控制
和其他编程语言一样,流程控制是必不可少的的,Shell脚本包括if、for、while、until 、case等语法,下面我们逐个介绍一下。
if语句
if语法格式如下:
1 2 3 4 |
if condition then command... fi |
if else语法格式如下:
1 2 3 4 5 6 |
if condition then command... else command... fi |
if else-if else语法格式如下:
1 2 3 4 5 6 7 8 9 |
if condition then command... elif condition1 then command... else command... fi |
演示示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#!/bin/bash a=10 b=20 if [ $a == $b ] then echo "a=b" elif [ $a -gt $b ] then echo "a>b" elif [ $a -lt $b ] then echo "a<b" else echo "null" fi |
运行脚本,结果如下:
1 |
a<b |
for循环
for循环的语法格式如下:
1 2 3 4 |
for var in item1 item2 ... itemN do command done |
演示示例如下:
1 2 3 4 5 6 |
#!/bin/bash for str in 1 two 3 a b c 5 6 do echo $str done |
运行脚本,结果如下:
1 2 3 4 5 6 7 8 |
1 two 3 a b c 5 6 |
while语句
while循环的语法格式如下:
1 2 3 4 |
while condition do command done |
示例如下:
1 2 3 4 5 6 7 8 |
#!/bin/bash i=0 while (( $i <= 5 )) do echo "当前序号:$i" let "i++" done |
运行脚本,结果如下:
1 2 3 4 5 6 |
当前序号:0 当前序号:1 当前序号:2 当前序号:3 当前序号:4 当前序号:5 |
while循环读取键盘示例:
1 2 3 4 5 6 |
echo '按下 <CTRL-D> 退出' echo -n '输入你最喜欢的网站名: ' while read site do echo "是的!$site 是一个好网站" done |
运行脚本,没有退出无限循环,结果如下:
1 2 3 |
是的!jsgang的博客 是一个好网站 Google 是的!Google 是一个好网站 |
无限循环
无限循环可以用以下三种语法格式:
1 2 3 4 |
while : do command done |
1 2 3 4 |
while true do command done |
1 |
for (( ; ; )) |
until 循环
until 循环与 while 循环类似,只是在处理方式上刚好相反。until 语法格式如下:
1 2 3 4 |
until condition do command done |
示例如下:
1 2 3 4 5 6 7 8 |
#!/bin/bash a=0 until [ ! $a -lt 10 ] do echo $a let "a++" done |
运行脚本,结果如下:
1 2 3 4 5 6 7 8 9 10 |
0 1 2 3 4 5 6 7 8 9 |
case
case语句为多条件语句。可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。case语法格式如下:
1 2 3 4 5 6 7 8 |
case value in mode1) command1 ;; mode2) command2 ;; esac |
示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#!/bin/bash echo '输入 1 到 3 之间的数字' echo -e '你输入的数字是: \c' read a case $a in 1) echo '你选择了 1' ;; 2) echo '你选择了 2' ;; 3) echo '你选择了 3' ;; *) echo '你输入的不符合条件' ;; esac |
运行脚本,结果如下:
1 2 3 |
输入 1 到 3 之间的数字 你输入的数字是: 2 你选择了 2 |
跳出循环
break命令允许跳出所有循环
continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。