一、test命令
语法:
test $x = $y #效果同[ $x = $y ]
二、if语句
语法:
if condition1
then
command1
elif condition2
then
command2
else
commandN #sh的流程控制不可为空,如果else分支没有语句执行,就不要写这个else。
fi
实例:
常与test方法连用
x=$[2*3]
y=$[1+5]
if test $[x] -eq $[y] #此处中括号可有可无,效果与 [ $x -eq $y ]相同
then
echo '两个数字相等!'
else
echo '两个数字不相等!'
fi
#两个数字相等!
三、for循环
语法:
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
写成一行:
for var in item1 item2 ... itemN; do command1; command2;… commandN; done;
实例:
for i in 1 23 45; do echo -e 'i=\c' ; echo $i;done;
i=1
i=23
i=45
四、while 语句
语法:
while condition
do
command
done
实例:
echo 'use <CTRL-D> to exit'
echo -n 'you best film is:'
while read film
do
echo woo! i like $film too!
done
use < CTRL-D> to exit
you best film is:we
woo! i like we too!
weeee
woo! i like weeee too!
…
五、until 循环
until循环执行一系列命令直至条件为真时停止。until循环与while循环在处理方式上刚好相反。
语法:
until condition
do
command
done
#条件可为任意测试条件,测试发生在循环末尾,因此循环至少执行一次—请注意这一点。
六、case语句
语法:
case 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
esac
case工作方式如上所示。取值后面必须为单词in,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。
取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。
使用esac结束case。
实例:
echo '输入 1 到 4 之间的数字:'
echo '你输入的数字为:'
read aNum
case $aNum in
1) echo '你选择了 1'
;;
2) echo '你选择了 2'
;;
3) echo '你选择了 3'
;;
4) echo '你选择了 4'
;;
5|6|7) echo '你选择了 5-7之间的数'
;;
*) echo '你没有输入 1 到 7 之间的数字'
;;
esac
输出:
输入 1 到 4 之间的数字:
你输入的数字为:
6
你选择了 5-7之间的数
七、跳出循环
- break:结束循环
- continue:继续下一次循环