shell流程的控制
shell作为一门脚本语言,同样具有一定的逻辑流程控制,if-else语句
,for语句
,switch语句
,while语句
,etc
if语句
if
的基本语法
if condition
then
command1
command1
...
fi
插一个小知识,;
可以作为命令终止符。
if else
if else的基本语法:
if condition1
then
command1
command2
...
else
command
fi
if else-if else
if else-if else的基本语法
if condition1
then
command1
elif condition2
then
command2
else
command3
fi
举个例子:
a=2
b=5
if [ $a -eq $b ]
then
echo "a == b"
elif [ $a -gt $b ]
then
echo "a > b"
elif [ $a -lt $b ]
then
echo "a < b"
else
echo "error"
fi
运行结果输出:
a < b
for循环
for循环的语法格式:
for var in item1 item2 item3 ... itemN
do
command1
command2
...
done
可以写成一行的形式:
for var in item1 item2 item3 ... itemN; do command1; command2 done
举个例子1
for val in 1 2 3 4 5
do
echo "val = $val"
done
输出结果:
val = 1
val = 2
val = 3
val = 4
val = 5
举个例子2
for val in "Hello world~"
do
echo $val
done
输出结果:
Hello world~
通过例子1和例子2可以看出,每次for只执行一个命令,每次都是一个整体。
while语句
while循环用于不断的执行一系列的命令,也可以用于从文件中读取数据,命令通常为测试的条件,格式如下:
while condition
do
command
done
举个例子
int=1
while (( $int<=5 ))
do
echo $int
let int++
one
结果输出:
case语句
有点像C语言中的switch语句。
语法:
case val in
model1)
command1
command2
...
;;
model)
command1
command2
...
;;
esac
val与每个模式(model)进行匹配,若与某一个模式匹配,就执行模式后面相应的命令。
插一知识点,关于;;
,等价于C语言中的break
,终止case这个语句。
case——-esac,最后的那个就是case翻过来。
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
这个和C语言以及其他的语言用法相同。
本文参考:http://www.runoob.com/linux/linux-shell-process-control.html
https://www.shiyanlou.com/courses/944/labs/3563/document