shell中流程的控制

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

猜你喜欢

转载自blog.csdn.net/idealcitier/article/details/78334544