shell指令碼的函式位置相對自由,既可以乙個shell指令碼單獨成乙個函式, 也可以在主**中嵌入內建函式.
在shell中可以通過下面的兩種語法來定義函式,分別如下:
function_name ()
或者
function function_name()
當某個函式定義好了以後,使用者就可以通過函式名來呼叫該函式了。在shell中,函式呼叫的基本語法如下,
function_name parm1 parm21
例如下面的指令碼:
#!/usr/bin/env bash
# encoding: utf-8.0
function test_func()
echo "here is main function"
echo "now inside function: test_func"
test_func hello world
執行後輸出:
here is main function
now inside function: test_func
input parameter1: hello
input parameter2: world
還可以更複雜一些.例如整個shell指令碼還有控制台的輸入引數:
#!/usr/bin/env bash
# encoding: utf-8.0
function test_func()
function print_list()
echo "here is main function"
echo "now inside function: test_func"
test_func hello world
print_list $1
執行./shell_function.test list.txt
得到的輸出如下.可見內建函式內的引數列表和指令碼的引數列表互相並不影響.
here is main function
now inside function: test_func
output from inside-function:test_func
input parameter1: hello
input parameter2: world
line1
line2
line3
line4
比較複雜的shell指令碼通常都會支援多個引數及其輸入. 通常引數的形式為-[a-z,a-z] [filename/settings]
的形式. 通常在控制台輸入指令碼名稱時,會顯示出幫助檔案.
可以定義乙個usage() {}函式作為指令碼引數設定的幫助,引數比較少的時候,可以echo命令實現,當引數比較多的時候,可以用cat工具配合eof符號來定義大段的說明文字. 例如:
# 幫助語句
usage()
# 顯示幫助, 當只有指令碼名稱,沒有任何引數的時候,顯示usage函式中定義的內容.
[ "$1" = "" ] && usage
這裡bet命令的呼叫格式定義為:bet [options]
,這也是一種常見的shell指令碼引數格式. 當options比較多的時候,shell指令碼沒有python argpase這樣的工具包, 應該如何解析這些引數設定呢? shell指令碼函式及傳參
shell指令碼的函式位置相對自由,既可以乙個shell指令碼單獨成乙個函式,也可以在主 中嵌入內建函式.在shell中可以通過下面的兩種語法來定義函式,分別如下 function name 或者 function function name 當某個函式定義好了以後,使用者就可以通過函式名來呼叫該函...
shell指令碼傳參
喜歡用第二種方法 shell傳函式方法 法一 使用全域性變數 html view plain copy g result function testfunc testfunc echo g result 方法二 把shell函式作為子程式呼叫,將其結果寫到子程式的標準輸出 html view pla...
Shell 向shell指令碼傳參
我們可以在執行 shell 指令碼時,向指令碼傳遞引數,指令碼內獲取引數的格式為 n。n 代表乙個數字,1 為執行指令碼的第乙個引數,2 為執行指令碼的第二個引數,以此類推 傳遞到指令碼的引數個數 以下例項我們向指令碼傳遞三個引數,並分別輸出,其中 0 為執行的檔名 test.sh echo she...