流程控制
条件控制
- if
if condition
then
command1
command2
...
commandN
fi
写成一行(适用于终端命令提示符):
if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi
- if else
if condition
then
command1
command2
...
commandN
else
command
fi
- if else-if else
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
- case条件
case 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
esac
echo '输入 1 到 4 之间的数字:'
echo '你输入的数字为:'
read aNum
case $aNum in
1) echo '你选择了 1'
;;
2) echo '你选择了 2'
;;
3) echo '你选择了 3'
;;
4) echo '你选择了 4'
;;
*) echo '你没有输入 1 到 4 之间的数字'
;;
esac
一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。
循环控制
- for循环
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
in列表是可选的,如果不用它,for循环使用命令行的位置参数。
for loop in 1 2 3 4 5
do
echo "The value is: $loop"
done
写成一行:
for var in item1 item2 ... itemN; do command1; command2… done;
- while循环
while condition
do
command
done
- 无限循环
while :
do
command
done
或者
while true
do
command
done
或者
for (( ; ; ))
- until循环
until 循环执行一系列命令直至条件为 true 时停止。
until 循环与 while 循环在处理方式上刚好相反。
一般 while 循环优于 until 循环,但在某些时候—也只是极少数情况下,until 循环更加有用。
until condition
do
command
done
- 跳出循环
break 跳出整个循环
continue 跳出当前循环