我有兩個shell腳本,即(master,function);主調用函數腳本並嘗試將值傳遞給它。在兩個shell腳本之間傳遞幾個值
請注意,函數腳本是一個交互式腳本;即它根據答案等待用戶的答案來執行。
所以要通過一個價值,我可以寫:
echo "string" | ./function-script
的問題是,我要通過幾個值。有什麼建議?
我有兩個shell腳本,即(master,function);主調用函數腳本並嘗試將值傳遞給它。在兩個shell腳本之間傳遞幾個值
請注意,函數腳本是一個交互式腳本;即它根據答案等待用戶的答案來執行。
所以要通過一個價值,我可以寫:
echo "string" | ./function-script
的問題是,我要通過幾個值。有什麼建議?
可以在「功能腳本」位置參數來操作?如果是這樣,你把它想:
./function-script arg1 "argument 2" arg3
然後「功能腳本」將使用所需"$1"
,"$2"
和"$3"
。
如果「功能腳本」只對標準輸入的輸入,做這樣的事情:
printf "%s\n" arg1 "argument 2" arg3 | ./function-script
和「功能腳本」會做:
IFS= read -r arg1
IFS= read -r arg2
IFS= read -r arg3
簡單的解決方案:
export a=1
語法在主腳本中導出所有變量即可。使用命令行參數。
./function-script "string" "another string"
如果您搶先標準輸入管道通過數據導入功能腳本,使功能腳本的交互操作很難。
你可以不是與環境變量導出變量作爲環境變量,但只是作爲常規節目全局變量是不是一個好主意,因爲他們使用的是隱藏的,所以也。
其實我需要第二種情況。我遇到了-r -r:命令未找到的問題 事實上,閱讀手冊根本不包含標誌-r。所以你可以請解釋一下 – user2804070 2014-08-27 20:09:49
顯示產生該錯誤的確切代碼。你在用什麼外殼? – 2014-08-27 20:11:25
我在debian 2.30.2和ubuntu上使用bash shell 14.04.1 但是,這裏是我的測試腳本: master.sh: 'printf「%s \ n」「1」「2」| 。/ func.sh' func.sh: '回聲 「輸入2號:」 第一=讀-r ARG1 第二=讀-r ARG2 回聲「============ =====」 呼應,因爲在註釋中的代碼部分的格式$第一 回聲$秒' 和抱歉.. – user2804070 2014-08-28 07:36:53