Shell 學習(三)--流程控制

Shell 學習(三)--流程控制

1 if判斷

  • 基本語法
if [ 條件判斷式 ];then 
程序
fi

或者

if[ 條件判斷式 ]
    then
        程序
        elif[ 條件判斷式 ]
            then
                程序
fi

注意事項:(1) [ 條件判斷式 ],中括號和條件判斷式之間必須要有空格。(2) 推薦使用第二種方式

  • 應用實例

案例: 編寫一個shell程序,請輸入參數,大於等於60,則輸出“及格了”,如果小於60,則輸出“不及格”

#!/bin/bash
if [ $1 -ge 60 ]
    then 
        echo "及格了"
elif[ $1 -lt 60]
    then
        echo "不及格"
fi

2 case 語句

  • 基本語法

這個case語法很不一樣,我開始很不習慣,有點像C的感覺

case $變量名 in
"值1")
    如果變量的值等於值1,則執行程序1
;;
"值2")
    如果變量的值等於值2,則執行程序2
;;
···省略其他分支···
*)
如果變量的值都不是以上的值,則執行此程序
;;
esac
  • 應用實例

案例:當命令行參數是1時,輸出“週一”,當參數是2時,輸出“週二”,其他情況輸出other。

#!/bin/bash
case $1 in
"1")
    echo "週一"
;;
"2")
    echo "週二"
;;
*)
    echo "other"
;;
esac

3 for循環

  • 基本語法1
for 變量 in 值1 值2 值3 ..
do  
    程序
done

應用實例

打印命令行輸入的參數[會使用到$* 和$@]

#!/bin/bash
#使用$*
for i in "$*"
do
    echo "the num is $i"
done

echo "====="
#使用$@
for j in "$@"
do
    echo "the num is $j"
done

執行後爲這樣:

  • 基本語法2

    這個語法就很像java中的for循環

for((初始值;循環控制條件;變量變化))
do
    程序
done

應用實例:從1加到100的值輸出顯示

但是這個很奇怪,前面判斷條件都是用-gt -ge 來着。這裏可以直接用<=

#!/bin/bash
#定義一個變量
SUM=0
for((i=0;i<=100;i++))
do
    SUM=$[$SUM+$i]
done
echo "sum=$SUM"

4 while 循環

  • 基本語法
while [ 條件判斷式 ]
do
    程序
done

應用實例

案例:從命令行輸入一個數n,統計從1+...+n 的值是多少

#!/bin/bash
SUM=0
i=0
while [$i -le $1]
do
    SUM=$[$SUM+$i]
    i=$[$i+1]
done
echo "sum=$SUM"

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章