函式定義格式:
和js有點類似,不過在 shell 中 function 關鍵字是可選的。
如:
sum
function sum()
函式呼叫方法:
sum 引數1 引數2 ...
獲取函式引數:
這個和我們以往的經驗可能不太一樣,shell 中獲取函式引數的方式有點特別。
一般語言中,都是在函式名後面的括號中給定乙個變數名去接收函式引數。
而在 shell 中,獲取函式引數的方式是在函式體中使用美元符號加上數字獲取,如 $1 獲取第乙個引數,$2 獲取第二個引數,依次類推,但是大於或等於 10 的時候,$ 後面的數字要加上大括號,如 $。
如:
sum()
與 $ 有關的其他引數:
引數處理
說明$#
傳遞給函式的引數總個數
$*
以乙個字串顯示所有的引數
$$
指令碼執行的當前程序的id號
$!後台執行的最後的程序的id號
$@與$*相同,但是在使用時加引號,並在引號中返回每個引數
$-顯示 shell 使用的當前選項,如:我們使用 set -x 的時候,$- 中會包含 x
$?顯示上一條命令的退出狀態,或者說是返回值,沒有返回值並正常執行的時候會返回 0
如:
#!/bin/bashfunca()
sum()
sum 1 2
上面的**會輸出:
引數總個數: 2字串形式顯示所有引數: 1 2
指令碼執行的程序id號: 1408
字串形式顯示所有引數: 1 2
shell指令碼執行的選項: hb
上乙個語句的返回值: 123
3
指令碼中獲取任意多的引數:
#!/bin/bashsummulti()
summulti 1 2 3 4 5
while 後面的中括號左右需要有空格,語法需要,書寫格式沒有一般語言自由,
並且賦值表示式的等號左右不能有空格,有空格的語句,shell會將第乙個詞作為 shell 命令,然後將第乙個空格後面的任何內容當作 shell 命令的引數,這也是 shell 的獨特之處,理解這一點對於 shell 的學習非常關鍵!如上面的 sum=0 如果寫作 sum = 0,會提示諸如下面的內容:
sum: =: no such file or directorysum: 0: no such file or directory
也就是說 shell 在執行這個語句的時候,實際上是把 sum 當作 shell 命令了(當然函式也可以這麼呼叫)。
shift 的作用是將第乙個引數從引數列表中移除。
獲取函式返回值:
1、通過 return 獲取返回值:
#!/bin/bashsummulti()
summulti 1 2 3 4 5
echo "通過return獲取返回值: $?"
我們可以使用上面提到的 $? 獲取上乙個函式執行的返回值。
2、通過 echo 獲取返回值:(原理: 我們可以使用反引號獲取命令執行的輸出內容)
#!/bin/bashsummulti()
sum=`summulti 1 2 3 4 5`
echo "通過echo獲取返回值: $sum"
上面函式呼叫那一行也可以換做:兩種寫法差不多
sum=$(summulti 1 2 3 4 5)
shell 函式的使用
linux指令碼很龐大,也很強大。定義 function 函式名 function可省略 呼叫 直接在指令碼中使用函式名即可。當然也可帶引數如 函式名 引數 用空格隔開 向函式傳遞引數 像在一般指令碼指令碼中使用引數一樣,使用特殊變數 1 2 9 函式取得引數後,會將原始引數傳回shell指令碼。可...
shell中函式的使用
1 函式的定義 2 引數的傳遞 3 函式內變數的範圍 4 函式返回 下面將分別進行介紹。一 函式的定義 在shell中,函式的定義有兩中 1 形如 function functionname 2 形如 functionname 第二種其實也就是把第二種的function關鍵字去掉,兩種形式都可以,很...
shell指令碼 函式的使用
bin bash 函式入門 function test test注意 呼叫函式的時候,直接函式名呼叫即可 寫乙個接收兩個數字引數的函式,計算和並輸出結果 bin bash 接收兩個引數,求和,並輸出結果 function add add 10 20第乙個指令碼 test func filemd5.s...