我需要编写一个程序,其输出是另一个程序的命令行的一部分。 e.g。
% helper
--arg1='foo bar' --arg2='another string'
然后用作
% program `helper`
或
% program args `helper` more-args
这很简单,没有引号,但我找不到任何可行的引用。
我可以这样工作:
% echo `helper` | xargs program
但我不想对我的客户造成这种情况。
是否有任何'helper'可以输出,以便以比使用xargs更简单的方式调用'program'?
答案 0 :(得分: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[@]}"
Quoting是shell语法的一部分,您不能在参数中嵌入shell语法。你也可以试试
% eval "program $(helper)"
虽然我建议不要更广泛地使用eval
。与eval
的任何使用一样,您需要注意helper
输出,以便不会运行任何非预期的代码。