一、条件结构case




二、循环结构for





三、循环结构-while循环
echo '按下 <CTRL-D> 退出'
echo -n '输入你最喜欢的城市名: '
while read city
do
echo "是的!$city是一个好地方"
done


四、 循环结构-until

#!/bin/bash
a=0
until [ $a -gt 5 ]
do
echo $a
let a++
done

五、循环结构-select
select in 循环用来增强交互性,它可以显示出带编号的菜单,用户输入不同的编号就可以选择不同的菜单,并执行不同的功能。
select in 是 Shell 独有的一种循环,非常适合终端(Terminal)这样的交互场景,C语言、C++、Java、Python、C#等其他编程语言中是没有的。
Shell select in 循环的语法如下:
select name [in words ...]; do commands; done
先来一个栗子🌰:
ctrl+d退出后输出你最后选择的是哪一个选项。
#!/bin/bash
echo "what is your favourite os?"
select name in "Linux" "Windows" "MAC OS" "UNIX" "Android"
do
echo $name
done
echo "your have selected $name"

注意,select是无限循环(死循环),输入空值,或者输入的值无效,都不会结束循环,只有遇到break语句,或者按下Ctrl+D组合键才能结束循环。
完整实例:
select in 通常和 case in 一起使用,在用户输入不同的编号时可以做出不同的反应。
修改上面的代码,加入 case in 语句:

用户只有输入正确的编号才会结束循环,如果输入错误,会要求重新输入。
六、break
break命令允许跳出所有循环(终止执行后面的所有循环)
下面的例子中,脚本进入死循环直至用户输入数字大于5。要跳出这个循环,返回到shell提示符下,需要使用break命令。
实例:
#!/bin/bash
while :
do
echo -n "输入 1 到 5 之间的数字:"
read aNum
case $aNum in
1|2|3|4|5) echo "你输入的数字为 $aNum!"
;;
*) echo "你输入的数字不是 1 到 5 之间的!游戏结束"
break
;;
esac
done
七、continue
continue命令与break命令类似,只有一点差别,他不会跳出所有循环,仅仅跳出当前循环。
#!/bin/bash
while :
do
echo -n "输入 1 到 5 之间的数字:"
read aNum
case $aNum in
1|2|3|4|5) echo "你输入的数字为 $aNum!"
;;
*) echo "你输入的数字不是 1 到 5 之间的!游戏结束"
continue
echo "游戏结束"
;;
esac
done
本文介绍了Shell脚本中的多种循环结构,包括for、while、until及select循环,并通过示例展示了break和continue命令的用法。


825

被折叠的 条评论
为什么被折叠?



