Shell_4
流程控制:
#Sh的流程控制不可为空,else分支如果没有语句执行,就不用写这个else
if:
if condition
then
command1
command2
...
commandN
fi
#也可写成一行:if[condition];then command;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
#if else 的 [...] 判断语句中大于使用 -gt,小于使用 -lt
#若使用((...))作为判断语句,大于和小于可直接使用>和<
for:
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
#for var in item1 item2 ... itemN; do command1; command2… done;
当变量值在列表里,for 循环即执行一次所有命令,使用变量名获取列表中的当前取值。
for loop in 1 2 3 4 5
do
echo "The value is: $loop"
done
while:
while condition
do
command
done
while循环还可用于读取键盘信息。eg:
echo '按下 <CTRL-D> 退出'
echo -n '输入你最喜欢的网站名: '
while read FILM
do
echo "是的!$FILM 是一个好网站"
done
无限循环(三种):
while :
do
command
done
while true
do
command
done
for (( ; ; ))
until循环:
ntil 循环执行一系列命令直至条件为 true 时停止。
until 循环与 while 循环在处理方式上刚好相反。
一般 while 循环优于 until 循环
until condition
do
command
done
case ... esac:
lisiyu其他语言中的 switch ... case , case分支从)开始,;;表示结束
case 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
esac
#取值后面必须为单词 in,每一模式必须以右括号结束。取值可以为变量或常数,匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。
eg:
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
→
输入 1 到 4 之间的数字:
你输入的数字为:
3
你选择了 3
跳出循环:
break、continue
eg:
#!/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
#!/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