2013-11-20 17 views
-2

我需要編寫一個程序,其輸出是另一個程序的命令行的一部分。例如如何編寫程序來爲其他程序生成正確引用的命令行參數?

% helper 
--arg1='foo bar' --arg2='another string' 

,然後將其作爲

% program `helper` 

% program args `helper` more-args 

這是不帶引號很簡單,但我無法找到任何形式的報價,將工作的。

我可以得到它像這樣工作:

% echo `helper` | xargs program 

,但我不希望造成之類的事情在我的客戶。

有什麼'幫助'可以輸出,將允許'程序'被調用比簡單的方式比使用xargs?

回答

0

這樣的事情可能會起作用。

# Make helper output an array assignment 
% helper 
options=(--arg1='foo bar' --arg2='another string') 

# Use eval to actually define the array using the output of helper 
% eval "$(helper)" 
% echo "${options[0]}" 
--arg1='foo bar' 

# Call program using options instead of helper directly 
% program "${options[@]}" 

引用是shell語法的一部分,並且不能在參數中嵌入shell語法。你也可以嘗試

% eval "program $(helper)" 

雖然我建議不要這樣廣泛使用eval。與任何使用eval一樣,您需要小心輸出helper的輸出,以便不會運行意外代碼。

相關問題