linux shell 條件控制

以下的總結大部分copy這個地址http://www.cnblogs.com/chengmo/archive/2010/10/14/1851434.html上看到的關於linux shell編程中條件控制上的介紹,看了一些shell條件控制上的介紹,還是這個較爲親切:

 

首先要強調一點,關於分號的使用

   shell命令,可以按照分號分割,也可以按照換行符分割。如果想一行寫入多個命令,可以通過“';”分割。

   之前看到有的地方用';',有的地方又不用,這下讓我們這些c系和java系的倍感親切,沒事你就多加幾個;;;吧。

 

1 if 語句(if then fi)

結構:

if 條件測試語句

then

action

[elif 條件

action

else

action

]

fi

 

實例:

#!/bin/sh

scores=40;
if [[ $scores -gt 90 ]]; then
    echo "very good!";
elif [[ $scores -gt 80 ]]; then
    echo "good!";
elif [[ $scores -gt 60 ]]; then
    echo "pass!";
else
    echo "no pass!";
fi;

 

其中if和fi配對,if else 變成了ifelse,這個和c的宏定義很像 #ifdef #endif頗類似,

2  for … in 語句

結構:

for 變量 in seq字符串

do

action

done                                                                                                                            

 

實例:

#!/bin/sh

#seq 10命令將產生 1 2...10序列 

for i in $(seq 10); do
    echo $i;
done;

 

這兒要說明的一點是 in後面的所謂list其實是以空格分開的,如 "abc" 3 "jias",這和一般的list表示是有些區別的,我們正常的理解list應該長這個樣子是   "abc",3,"jias"

 

for((賦值;條件;運算語句))

結構:

for((賦值;條件;運算語句))

do

action

done;

實例:

#!/bin/sh

for((i=1;i<=10;i++));do
    echo $i;
done;

 

這個和javascript循環就很像了。但強烈建議 echo 後面的內容或變量最好放在 " "內

4 while循環使用(while/do/done)

結構:

while 條件語句

do

action

done;

實例1:

#!/bin/sh
i=10;

#當變量大於5時成立
while [[ $i -gt 5 ]];do 
    echo $i;
    ((i--));
done;

 

實例2:(循環讀取文件內容:)

#!/bin/sh

#從文本里每次讀一行,read是關鍵字,read也可以接受控制檯的輸入,不一定讀文件

while read line;do
    echo $line;
done < /etc/hosts;

這裏也可以學到讀取文件的方式 文件名爲  /etc/hosts 主機配置文件

 

5 until循環語句

 

結構:

until 條件

do

action

done

意思是:直到滿足條件,就退出。否則執行action.

 

實例:

#!/bin/sh

a=10;

until [[ $a -lt 0 ]];do

echo $a;

((a--));

done;

 

6 case選擇語句使用(case/esac)

結構:

case $arg in  
    pattern | sample) # arg in pattern or sample  
    ;;  
    pattern1) # arg in pattern1  
    ;;  
    *) #default  
    ;;  
esac 

說明:pattern1 是正則表達式,可以用下面字符:

                 *       任意字串
                 ?       任意字元
                 [abc]   a, b, 或c三字元其中之一
                 [a-n]   從a到n的任一字元
                 |       多重選擇

 

實例:

#!/bin/sh 

case $1 in
start | begin)
    echo "start something"  
    ;;
stop | end)
    echo "stop something"  
    ;;
*)
    echo "Ignorant"  
    ;;
esac

 

select語句使用方法(產生菜單選擇)

結構:

 

select 變量name  in seq變量

do

    action

done

實例:

#!/bin/sh 

select ch in "begin" "end" "exit"
do
case $ch in
"begin")
    echo "start something"  
    ;;
"end")
    echo "stop something"  
    ;;
"exit")
    echo "exit"  
    break;
    ;;
*)
    echo "Ignorant"  
    ;;
esac
done;

select多爲控制檯的提示輸入,這個在用到一些服務器時經常會配到這類風格的東西,select in後面和for in後面的list結構都是一樣的

 

#在ubuntu下做以上測試,如果遇到 Syntax error: Bad for loop variable

解決方法是 取消dash
sudo dpkg-reconfigure dash
在選擇項中選No,即可。

 

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