shell中的函數定義及控制語句

來源:互聯網
上載者:User

1.shell中的函數定義格式為:

function name(){

#函數體

}

函數的定義必須遵循先定義在使用的原則,如定義函數print

#!/bin/shfunction print(){if [ $# -lt 1 ]then  print “no parameter”;return  1;else ehco “$1,$2”;return 0;fi}ehco “print function is being invoked”print

上面的return 語句是函數的返回值,可以用0表示函數運行成功,1表示運行失敗,如果沒有return 語句,shell函數最後命令產生的值作為返回值。

除了在指令碼中可以定義使用函數外,還可以將函數寫成一個檔案,然後載入函數即可調用。

如定義下面的函數

#!/bin/sh#filename:guessnum.shfunction guess(){num1=$RANDOM;num=$num1%100;echo “please guess a number”while truedoprintf “input a number\n”read inpuif (($inpu == $num))thenprintf “right\n”;break;elseif (($inpu < $num))then printf “too low\n”;elseprintf “too high\n”;fi done}

把這個函數儲存為guessnum.sh檔案,然後定位檔案,方法是: <.><空格><檔案名稱>

即 $. guessnum.sh

檢查載入的狀態: set|grep guessnum

執行函數:guessnum

刪除函數:unset guessnum

刪除後,重新載入,guessnum函數可以繼續使用。

下面是case語句的介紹,shell中的case語句基本格式為

case $變數名 in

匹配模式1)

;;

匹配模式2)

;;

匹配模式3)

;;

esac

#!/bin/bashprintf “input a character\n”;read  ch;case $ch in [a-z])echo “lower”;;;[A-Z])echo “upper”;;;[^A-Za-z])ehco “not a character”;;;esac

上面的代碼在ubuntu環境運行時,可能會出現大小寫不分的情況,即大寫字母或者小寫字母都會出 “lower”的結果,解決方案是運行LANG=C的命令,在運行程式。LANG=C中的C代表英文ASCII環境。

下面是for語句的介紹,for語句的基本格式為:

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

do

#statements

done

計算n的階乘方法為

#!/bin/shread  –p  “input a number” nums=1;for ((i=1;i<=$num;i++))s=$s*$i;echo ${{s}}

上面的代碼在ubuntu環境執行時,可能會出現bad for loop 錯誤,原因是ubuntu為了加快開機速度,將bash替換成了 dash,因為dash體積小,運行更快。解決錯誤的辦法是在終端中輸入命令sudo dpkg-reconfigure dash,然後在選項中選No就可以了。

(2)for … in…

do

#statement

done

產生5個隨機數,可以這樣

for k in 1 2 3 4 5

do

echo $RANDOM

done


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.