shell函式使用

2022-03-17 10:22:54 字數 1869 閱讀 5709

函式定義格式:

和js有點類似,不過在 shell 中 function 關鍵字是可選的。

如:

sum

function sum()

函式呼叫方法:

sum 引數1 引數2 ...

獲取函式引數:

這個和我們以往的經驗可能不太一樣,shell 中獲取函式引數的方式有點特別。

一般語言中,都是在函式名後面的括號中給定乙個變數名去接收函式引數。

而在 shell 中,獲取函式引數的方式是在函式體中使用美元符號加上數字獲取,如 $1  獲取第乙個引數,$2 獲取第二個引數,依次類推,但是大於或等於 10 的時候,$ 後面的數字要加上大括號,如 $。

如:

sum()

與 $ 有關的其他引數:

引數處理

說明$#  

傳遞給函式的引數總個數

$*  

以乙個字串顯示所有的引數

$$  

指令碼執行的當前程序的id號

$!後台執行的最後的程序的id號

$@與$*相同,但是在使用時加引號,並在引號中返回每個引數

$-顯示 shell 使用的當前選項,如:我們使用 set -x 的時候,$- 中會包含 x

$?顯示上一條命令的退出狀態,或者說是返回值,沒有返回值並正常執行的時候會返回 0

如:

#!/bin/bash

funca()

sum()

sum 1 2

上面的**會輸出:

引數總個數: 2

字串形式顯示所有引數: 1 2

指令碼執行的程序id號: 1408

字串形式顯示所有引數: 1 2

shell指令碼執行的選項: hb

上乙個語句的返回值: 123

3

指令碼中獲取任意多的引數:

#!/bin/bash

summulti()

summulti 1 2 3 4 5

while 後面的中括號左右需要有空格,語法需要,書寫格式沒有一般語言自由,

並且賦值表示式的等號左右不能有空格,有空格的語句,shell會將第乙個詞作為 shell 命令,然後將第乙個空格後面的任何內容當作 shell 命令的引數,這也是 shell 的獨特之處,理解這一點對於 shell 的學習非常關鍵!如上面的 sum=0 如果寫作 sum = 0,會提示諸如下面的內容:

sum: =: no such file or directory

sum: 0: no such file or directory

也就是說 shell 在執行這個語句的時候,實際上是把 sum 當作 shell 命令了(當然函式也可以這麼呼叫)。

shift 的作用是將第乙個引數從引數列表中移除。

獲取函式返回值:

1、通過 return 獲取返回值:

#!/bin/bash

summulti()

summulti 1 2 3 4 5

echo "通過return獲取返回值: $?"

我們可以使用上面提到的 $? 獲取上乙個函式執行的返回值。

2、通過 echo 獲取返回值:(原理: 我們可以使用反引號獲取命令執行的輸出內容)

#!/bin/bash

summulti()

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...