Bash:作为程序选项的变量字符串

时间:2013-10-20 16:08:14

标签: bash

我的计划有三个选项./program a b c INPUT > OUTPUTabc是选项。) 我有一个选项组合列表:

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我收到错误。

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

将选项放在命令行上:

./program $COMBO INPUT >> OUTPUT

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