shell高階函式

2022-06-25 01:18:13 字數 1995 閱讀 2992

函式function是由若干條shell命令組成的語句塊,實現shell**的重用和模組化程式設計。

函式和shell程式的異同點

它與shell程式形式上是相似的,不同的是它不是乙個單獨的程序,不能獨立執行,而是shell程式的一部分 

區別:1.shell程式會啟動乙個子shell來執行

2.函式會在當前shell中執行,因此在當前shell中,函式可以對shell中的變數進行修改 (  函式的有效範圍是在當前shell   )

函式的優先順序高於內部命令,外部命令,別名. 函式名稱如果和以上三種名稱衝突,優先函式執行.

刪除函式     執行unset functionname 

呼叫函式  functioname    呼叫時候不要新增()

全域性函式    export  -f  functioname

匿名函式    cmd1 ||        後面的     相當於匿名函式

多個指令碼中復用函式

source     functions(functions表示包含很多個函式的指令碼檔案)  或者 . functions

source    /etc/rc.d/init.d/functions

1.全域性(環境)變數  export

當前shell和子shell有效 

2.區域性變數(普通變數)

只在當前shell程序有效,為執行指令碼會啟動專用子shell程序; 因此,本地變數的作用範圍是當前shell指令碼程式檔案,包括指令碼中的函式 

3.本地變數   local

函式的生命週期;函式結束時變數被自動銷毀 

declare num 在函式中使用的話   相當於declare local  num    會自帶local的特性         declare -g  num  宣告為區域性變數

如果函式中有區域性變數,如果其名稱同本地變數相同,使用區域性變數 

傳遞引數給函式:呼叫函式時,在函式名後面以空白分隔給定引數列表即可;如「testfunc arg1 arg2 ...」

在函式體中當中,可使用$1, $2, ...呼叫這些引數;還可以使用$@, $*, $# 等特殊變數

return  退出函式本身   或者    return 100; 函式的返回值必須是乙個數字       return 只能在函式中使用

$?  獲取函式的返回值

函式有兩種返回值:

函式的執行結果返回值: 

(1) 使用echo等命令進行輸出 

(2) 函式體中呼叫命令的輸出結果 

函式的退出狀態碼: 

(1) 預設取決於函式中執行的最後一條命令的退出狀態碼 

(2) 自定義退出狀態碼,其格式為: 

return  從函式中返回,用最後狀態命令決定返回值 

return 0  無錯誤返回

return 1-255  有錯誤返回 

1 [root@iz2ze6e5pr6sbu9qxhzulaz ~]# fun1()

2 [root@iz2ze6e5pr6sbu9qxhzulaz ~]# fun1

3 [root@iz2ze6e5pr6sbu9qxhzulaz ~]# echo $?

4100

5 [root@iz2ze6e5pr6sbu9qxhzulaz ~]# fun2()

6 [root@iz2ze6e5pr6sbu9qxhzulaz ~]# fun2

7 -bash: return: aaa: numeric argument required

8 [root@iz2ze6e5pr6sbu9qxhzulaz ~]# echo $?

9255

10 [root@iz2ze6e5pr6sbu9qxhzulaz ~]# fun3()

11 [root@iz2ze6e5pr6sbu9qxhzulaz ~]# fun3

12100

13 [root@iz2ze6e5pr6sbu9qxhzulaz ~]# echo $?

140

view code

shell 指令碼 函式的高階使用

函式兩種命名格式 如下,第一種是帶 第二種是不帶 的 第一種小括號的 函式名 第一種不帶小括號的 function 函式名函式的傳遞引數 int example 1 int arg1,int arg2 舉例 int num1 10 int num2 20 函式呼叫形式一 int num3 examp...

shell高階 shell多執行緒

1.多執行緒併發執行任務,而不用一台臺的序列執行,能更快更高效 2.shell並沒有多執行緒的概念,所以 一般使用wait read等命令技巧性地模擬多執行緒實 使用命名管道 fifo 來實現多執行緒的控制 3.用途 需要對多主機批量執行檢查或操作時 例如ssh ping等操作 tmp fifofi...

高階shell特性

如果歷史命令和命令補充等有用的shell特性不能工作,請看一下內容。b 1 環境變數 b bash shell 維護大量已經執行命令 多種配置引數的設定 正在操作的環境等資訊,其中很多資訊儲存在 shell 環境中,因此稱作 環境變數 environment variable 可以通過輸入 prin...