Linux shell指令碼 (十六)shell函式

2021-08-15 19:35:54 字數 1335 閱讀 7111

​ 函式可以讓我們將乙個複雜功能劃分成若干模組,讓程式結構更加清晰,**重複利用率更高。像其他程式語言一樣,shell 也支援函式。shell 函式必須先定義後使用。

shell 函式的定義格式如下:

function_name ()
如果你願意,也可以在函式名前加上關鍵字 function:

function function_name ()
​ 函式返回值,可以顯式增加return語句;如果不加,會將最後一條命令執行結果作為返回值。

​ 如果一定要讓函式返回字串,那麼可以先定義乙個變數,用來接收函式的計算結果,指令碼在需要的時候訪問這個變數來獲得函式返回值。

#!/bin/bash

myfunc ()

# invoke your function

myfunc

執行結果:

$./test.sh

hello world

$

呼叫函式只需要給出函式名,不需要加括號。

#!/bin/bash

myfunc()

myfunc

echo

"myfunc return $?"

執行結果:

where@ubuntu:~$ ./test.sh 

hello world

myfunc return 5

函式返回值在呼叫該函式後通過 $? 來獲得。

#!/bin/bash

myfunc1 ()

myfunc2 ()

myfunc1

執行結果:

where@ubuntu:~$ ./test.sh 

myfunc1

myfunc2

#!/bin/bash

myfunc ()

myfunc

執行結果:

where@ubuntu:~$ ./test.sh 

myfunc 121

23

​ 像刪除變數一樣,刪除函式也可以使用 unset 命令,不過要加上 f 選項,如下所示:

unset f function_name

​ 在函式中定義的變數在整個shell指令碼中都能使用。

#!/bin/bash

myfunc ()

myfunc

echo

$var

執行結果:

where@ubuntu:~$ ./test.sh 

myfunc

888

Linux Shell指令碼基礎

shell指令碼在處理自動迴圈或大的任務方面可節省大量時間,且功能強大。任何指令碼都可能有注釋,加注釋需要此行的第乙個字元為 直譯器對此行不予解釋。指令碼不是複雜的程式,它是按行解釋的。指令碼第一行總是以 bin sh開始,這段指令碼通知shell使用系統上的 bourne shell直譯器。指令碼...

linux shell指令碼犯錯

指令碼裡犯了錯 oracle it shell value 1 oracle it shell value 1 bash value command not found oracle it shell value 3 bash value command not found oracle it sh...

Linux shell 指令碼例項

1.寫乙個指令碼,利用迴圈計算10的階乘 2.寫乙個指令碼,執行後,列印一行提示 please input a number 要求使用者輸入數值,然後列印出該數值,然後再次要求使用者輸入數值。直到使用者輸入 end 停止 執行指令碼方法 nuhup sh route.sh 注意前面要用上nohup,...