首页 > 代码库 > Shell 脚本学习笔记八:流程控制

Shell 脚本学习笔记八:流程控制

一、 if else      /// 如果else分支没有语句执行,就不要写这个else

    1、if 语句

        if condition

        then

            command1

            command2

            command3

            ...

        fi

        /// 写成一行:

        if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi

 

    2、if else

        if condition

        then

            command1

            command2

            ...

        else

            command

        fi

#!/bin/bash

num1=100;
num2=100;

if test $[num1] -eq $[num2]
then
    echo "两个数相等";
else
    echo "两个数不相等";
fi

输出以下结果:

两个数相等

 

    3、if else-if else

        if condition

        then

            command1

            command2

        elif condition

        then

            command

        else

            command

        fi

#!/bin/bash

a=10
b=20

if [ $a == $b ]
then
    echo "a 等于 b"
elif [ $a -gt $b ]
then
    echo "a 大于 b"
elif [ $a -lt $b ]
then
    echo "a 小于 b"
else
    echo "没有符合的条件"
fi 

输出以下结果:

a 小于 b

 

 

二、for 循环

     for var in item1 item2 ... itemN

    do

        command1

        command2

        ...

    done

 

    /// 写成一行

    for var in item1 item2 ... itemN; do command1; command2; ... done;

 

#!/bin/bash

for loop in 1 2 3 4 5
do
    echo "$loop";
done

输出以下结果:

1 
2
3
4 
5


for str in "This is a string"
do 
    echo "$str";
done

输出以下结果:

This
is
a 
string

 

 

三、while 语句

    while condition

    do

        command1

    done

while [ $cnt -le 5 ]
do
    echo $cnt
    let "cnt++"
done

    echo "按下 <CTRL-D> 退出"

    

  while循环可用于读取键盘信息。下面的例子中,输入信息被设置为变量FILM,按<Ctrl-D>结束循环

 

    echo "按下 <CTRL-D> 退出"

    echo -n "输入你最喜欢的电影名:"

    while read FILM

    do

        echo "是的!$FILM 是一部好电影"

    done

 

 

四、无限循环

    1、

        while :

        do

            command

        done

 

    2、

        while true

        do

            command

        done

 

    3、

        for (( ; ; ))

 

 

五、until 循环

  • until循环执行一系列命令直至条件为真时停止
  • until循环与while循环在处理方式上刚好相反
  •  条件可为任意测试条件,测试发生在循环末尾,因此循环至少执行一次
  •  一般while循环优于until循环,但在某些时候—也只是极少数情况下,until循环更加有用  

    until condition

    do

        command

    done

 

 

六、case

    case 值 in

        模式1)

            command1

            command2

            ...

            ;;

        模式2)

            command1

            command2

            ...

            ;;

    esac

 

#!/bin/bash

echo "输入 1 到 4 之间的数字"
echo "你输入的数字为:"

read aNum

case $aNum in 
    1)
      echo "你选择了 1"
      ;;
    2)
          echo "你选择了 2"
          ;;
    3)
          echo "你选择了 3"
          ;;
    4)
          echo "你选择了 4"
          ;;
esac

 

 

七、break

    跳出所有循环(终止执行后面的所有循环)

    while :
    do
        echo -n "请输入 1 到 5 之间的数字:"
        read aNum
case $aNum in 1|2|3|4|5) echo "你输入的数字为: $aNum" ;; *) echo "你输入的数字不是 1 到 5 之间的!结束游戏" break ;; esac done

 

  

八、continue

    跳出本次循环

 

Shell 脚本学习笔记八:流程控制