1

我的程序采用三个选项./program a b c INPUT > OUTPUTa, b,c是选项)。
我有一个选项组合列表:

cat list_of_combinations
1 2 3
4 8 3 
1 5 7
9 5 6    

我想program使用这四种不同的组合来执行。例如:

./program 1 2 3 INPUT >> OUTPUT  
./program 4 8 3 INPUT >> OUTPUT
./program 1 5 7 INPUT >> OUTPUT

我已经尝试过了:

while read COMBO; do
    echo $COMBO | 
     ./program - INPUT >> OUTPUT
done < list_of_combinations

还有这个:

while read COMBO; do
    ./program $COMBO INPUT >> OUTPUT
done < list_of_combinations  

我的问题是:
如何在使用一串变量作为选项时执行程序/命令?

编辑

如果只有一个字符作为变量,我不会有任何问题。我的意思是:
程序只需要一个选项:

./program a INPUT > OUTPUT
cat VARIABLES
    1 
    15
    78
while read VARIABLE; do
    ./program $VARIABLE INPUT > OUTPUT
done < VARIABLES

但是当有几个选项(字符串)时,例如./program a b INPUT > OUTPUT我得到错误。

4

2 回答 2

2

在参数变量周围使用引号:

while read COMBO; do
    ./program "$COMBO" INPUT >> OUTPUT
done < list_of_combinations

没有引号$COMBO将被视为 3 个不同的输入,而不是与引号一样的单个字符串。

于 2013-10-20T16:19:11.803 回答
1

通过将选项放在命令行上:

./program $COMBO INPUT >> OUTPUT

所以你的第二个例子应该有效。它有什么问题?

于 2013-10-20T16:10:21.053 回答