2014-08-27 94 views
0

我有兩個shell腳本,即(master,function);主調用函數腳本並嘗試將值傳遞給它。在兩個shell腳本之間傳遞幾個值

請注意,函數腳本是一個交互式腳本;即它根據答案等待用戶的答案來執行。

所以要通過一個價值,我可以寫:

echo "string" | ./function-script 

的問題是,我要通過幾個值。有什麼建議?

回答

1

可以在「功能腳本」位置參數來操作?如果是這樣,你把它想:

./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 
+0

其實我需要第二種情況。我遇到了-r -r:命令未找到的問題 事實上,閱讀手冊根本不包含標誌-r。所以你可以請解釋一下 – user2804070 2014-08-27 20:09:49

+0

顯示產生該錯誤的確切代碼。你在用什麼外殼? – 2014-08-27 20:11:25

+0

我在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

0

簡單的解決方案:

  • 不要試圖傳遞多個變量。
  • 只需使用export a=1語法在主腳本中導出所有變量即可。
  • 然後由主呼兒腳本像楷書
  • 所有變量將在孩子的腳本可用。
0

使用命令行參數。

./function-script "string" "another string" 

如果您搶先標準輸入管道通過數據導入功能腳本,使功能腳本的交互操作很難。

你可以不是與環境變量導出變量作爲環境變量,但只是作爲常規節目全局變量是不是一個好主意,因爲他們使用的是隱藏的,所以也。