我可以编写程序脚本以使用文本文件中的参数重复运行吗?

时间:2017-05-07 14:26:57

标签: bash parsing file-io terminal

我的问题是:我有一个用C编写的程序并启动它我已经习惯了

./program.exe var_1 ... var_n

其中var_i-th是数值和字符串(用作文件名)。 我必须使用不同的var_i-th值使程序运行多次,每次我必须调用上面的命令。

有没有办法准备类似的文件.txt(或类似的东西)

  • ./ program.exe var_1 ... var_n #configuration one
  • ./ program.exe var_1 ... var_n #configuration N

并使程序运行,以便在一次调用中我逐个运行所有配置?

由于

3 个答案:

答案 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