1. 程式人生 > >Shell 腳本學習筆記八:流程控制

Shell 腳本學習筆記八:流程控制

等於 break 語句 until循環 ase 所有 span 數字 if 語句

一、 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 腳本學習筆記八:流程控制