我的问题是:我有一个用C编写的程序并启动它我已经习惯了
./program.exe var_1 ... var_n
其中var_i-th是数值和字符串(用作文件名)。 我必须使用不同的var_i-th值使程序运行多次,每次我必须调用上面的命令。
有没有办法准备类似的文件.txt(或类似的东西)
并使程序运行,以便在一次调用中我逐个运行所有配置?
由于
答案 0 :(得分:3)
使用此内容创建一个文本文件(foo.sh
,例如),使其可执行(chmod u+x foo.sh
)并使用./foo.sh
运行:
#/bin/bash
/program.exe var_1 ... var_1 #configuration one
/program.exe var_1 ... var_2 #configuration two
/program.exe var_1 ... var_3 #configuration three
.
.
.
./program.exe var_1 ... var_n #configuration N
答案 1 :(得分:2)
要将每一行读入一个字符串数组,并将该数组传递给正在运行的程序,可以使用BashFAQ #1中描述的方法:
while read -r -a args; do
./program.exe "${args[@]}"
done <in.txt
将从in.txt
读取参数,期望它们以空格分隔。它不会尊重引号或转义序列,因为它们具有语法意义。
需要注意的是,如果您的文件包含:
arg1 "argument two" 13
你会得到:
./program.exe 'arg1' '"argument' 'two"' '13'
...总计四个参数。
如果您需要报价,那么我们会回到使用xargs
的空间,但每个输入行都有一次调用:
while read -r line; do
xargs ./program.exe <<<"$line"
done <in.txt
答案 2 :(得分:1)
您可以为每行准备一个带有自定义参数列表的文件,如下所示:
var_1
var_2
var_1 var_3
然后像这样的bash句子可以完成这项工作:
cat myFile.txt | xargs ./program.exe