Shell基础学习 流程控制

Posted 会学习的猪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell基础学习 流程控制相关的知识,希望对你有一定的参考价值。

1、if

  if的语法格式

if conditon
then
    command1
    command2
       ```
    commandn
fi

2、if else

if conditon
then
    command1
    command2
       ```
    commandn
else
    command1
    command2
       ```
    commandn
fi

3、if elseif else

if conditon
then
    command1
    command2
       ```
    commandn
else if conditon
    command1
    command2
       ```
    commandn
else
    command1
    command2
       ```
    commandn
fi

4、for循环

for(var in item1 item2 item3)
do
command1
command2
```
commandn
done

5、while

while condition
do
    command1
    command2
       ```
    commandn
done    

6、until

until循环执行一系列命令直至条件为真时停止。

until condition
do
    command
done

7、case

  Shell case语句为多选择语句。可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。case语句格式如下:

  

casein
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac

8、break

  break命令允许跳出所有循环(终止执行后面的所有循环)。

  下面的例子中,脚本进入死循环直至用户输入数字大于5。要跳出这个循环,返回到shell提示符下,需要使用break命令。

  

#!/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
结果: 输入 1 5 之间的数字:
   3 你输入的数字为 3!
输入 1 5 之间的数字:7
你输入的数字不是 1 5 之间的! 游戏结束

9、continue

  continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。

  对上面的例子进行修改:

  

#!/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

运行代码发现,当输入大于5的数字时,该例中的循环不会结束,语句 echo "游戏结束" 永远不会被执行。

以上是关于Shell基础学习 流程控制的主要内容,如果未能解决你的问题,请参考以下文章

Shell基础学习 流程控制

Linux Shell——流程控制

shell流程控制--循环语句

Shell脚本的基本流程控制

shell - 流程控制if

Shell基础学习 echo命令