shell指令碼中傳輸傳遞問題分析

2021-08-01 14:58:47 字數 465 閱讀 8984

很多時候,shell指令碼中再呼叫指令碼時需要傳引數,常用的無非有兩種:

i.在父程序的shell中將變數export直接變為環境變數,這樣子程序就能用到父程序的變數。

ii. 在呼叫指令碼時在指令碼後帶入引數。

要注意的是(i)不能將變數修改後再影響父程序的變數值,也就是說,export的值能在子程序中使用,但是子程序中修改該變數後也不能改變父程序的變數值。

還有中不常用的:

iii.用source執行呼叫的指令碼,這樣,呼叫的指令碼在當前shell中執行,也就不存在子程序一說,所有變數直接能在所呼叫的指令碼中使用且能完成修改,影響呼叫前的值!所以這種辦法少用,沒準呼叫指令碼就把不改修改的變數修改了。

另外,使用souce呼叫指令碼,要是被呼叫指令碼中遇到exit ,會直接導致在呼叫處直接退出整個指令碼,而不會執行呼叫處後面的內容!

iv. 還有種實在的方法就是,記錄在檔案,需要的時候再讀取,適合明確的先寫再讀。

shell 啟動並向指令碼中傳遞引數

shell傳遞引數教程 n表示第n個傳入的引數,0特指當前執行檔案的名字 echo the name of current file is echo when n 1,is echo 傳遞到當前指令碼的引數的個數,當然是不包括第0個了 echo for input in 對輸入的引數進行遍歷並列印 ...

shell中指令碼引數傳遞getopts

while getopts a b c opt docase opt in a echo 引數a的值 optarg b echo 引數b的值 optarg c echo 引數c的值 optarg echo 未知引數 exit 1 esac done 輸出bogon desktop macname t...

shell指令碼 函式傳遞引數

在乙個指令碼中,多個函式之間可能需要相互傳遞引數,之前一直對引數的傳遞以及引用有些疑問,今天做了幾個小測試例子 1 bin bash function f1 function f2 f1 1執行結果 temp2.sh pp mj ubuntu temp2.sh pp f1pp f2pp2 bin b...