shell編程式控制制結構:expr、let、for、while、until、shift、if、case、break、continue、函數、select,exprcontinue

來源:互聯網
上載者:User

shell編程式控制制結構:expr、let、for、while、until、shift、if、case、break、continue、函數、select,exprcontinue

1、expr計算整數變數值

s=`expr 2 + 3`

運算子號和參數之間要有空格分開;

2、let命令

let s=(2+3)*4

echo $s

3、for語句

for 變數 in 列表 do 命令列(通常用到迴圈變數) done
#!/bin/bashfor var in one two three four five        do                echo ------                echo '$var is' $var        done

以命令傳回值作為列表#!/bin/bashfor var in `ls`        do                echo -----                echo $var        done

4、while語句

文法格式:
while      運算式  do 命令列 done
#!/bin/bashnum=1while [ $num -le 10 ]doecho -e "\t the num is $num"let num=num+1done

5、until語句

文法格式:
unitil      運算式      do 命令列     done
#!/bin/bashsum=0num=10until test $num -eq 0        do                sum=`expr $sum + $num`                num=`expr $num - 1`        doneecho "sum = $sum"

6、shift語句
shift語句:將變數的值依次向左傳遞,並形成一組新的參數值例:位置變數當前值為:1=file1 2= file2 3=file3        執行一次shift後為:1=file2 2=file3 還可以在shift命令中指定位置變數轉移的次數shift n
#!/bin/bashwhile [ -n "$*" ]        do                echo $1 $2 $3 $4 $5 $6                shift        done

7、if語句

if 語句的一般形式 :
if   條件運算式 then  #當條件為真時執行以下語句          命令列表 else #當條件為假時執行以下語句          命令列表 fi
#!/bin/bashif test -f "$1"        then        echo "$1 is an ordinary file"else        echo "$1 is not an ordinary file"fi

8、case語句

   取值後面必須為單詞in,每一個模式必須以右括弧結束。取值可以為變數或常數。取值檢測匹配的每一個模式,一旦模式比對,其間所有命令開始執行直至;;。執行完匹配模式相應命令後不再繼續其他模式。如果無一匹配模式,使用*號捕獲該值,再接受其他輸入。   [注]1. 模式字串中可以使用萬用字元2. 如果一個模式字串中包含多個模式,那麼各模式之間應以豎線(|)隔開,表各模式是“或”的關係,即只要給定字串與其中一個模式相配,就會執行其後的命令列表。3. 各模式字串應是唯一的,不應重複出現,並且要合理安排它們的出現順序,例如,不應將“*”作為頭一個模式字串,因為“*”可以與任何字串匹配,若第一個出現,就不會再檢查其他模式了。4. case語句以關鍵字case開頭,以關鍵字esac結束。5. case的退出(返回)值是整個結構中最後執行的命令的退出值。若沒有執行任何命令,則退出值為0.
#!/bin/bashcase $1 in1)        echo " you choice is 1";;2)        echo " your choice is 2";;*)        echo " your choice is others";;esac

9、break與continue

1、break:用於立即終止當前迴圈的執行,break命令可以使使用者從迴圈體中退出來。文法:break[n] ,其中,n表示要跳出幾層迴圈,預設值為12、continue:跳過迴圈體中在其之後的語句,會返回到本迴圈層的開頭,進行下一次迴圈。文法:continue[n],其中,n表示從包含continue語句的最內層迴圈體向外跳到第幾層迴圈,預設值為1,迴圈層數是由內向外編號。

10、函數

  函數:由函數標題和函數體兩部分組成。標題是函數名。函數體是函數內在的命令集合。標題名稱必須唯一。變數均為全域變數,沒有局部變數。

#!/bin/bashnum=1hello(){        echo "hello boy~ It's our $num meeting"        let num=num+1}

11、select語句

格式:

select 變數 in 列表 do 命令列(通常用到迴圈變數) done

 

    製作一個選擇表,在列表中選擇一個選項執行命令列。如果選擇的變數不在列表序列中,則返回一個空值。需要用break退出迴圈。

#!/bin/bashecho "a is 5 ,b is 3. Please select your method: "a=5b=3select var in "a+b" "a-b" "a*b" "a/b"do        breakdonecase $var in"a+b")        echo 'a+b= '`expr $a + $b`;;"a-b")        echo 'a-b= '`expr $a - $b`;;"a*b")        echo 'a*b= '`expr $a \* $b`;;"a/b")        echo 'a/b= '`expr $a / $b`;;*)        echo "input error"esac



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.