将文件的每一行作为命令行参数传递给二进制文件

时间:2013-09-02 08:26:23

标签: c++ c linux shell

我有一个二进制文件: temp.exe

此二进制文件( temp.exe )采用两个命令行参数 a b

我还有一个 agrsList.txt 文件,其中包含:

a1 b1
a2 b2
a3 b3
:  :
:  :
an bn

现在,我想将此文件的每一行作为参数传递给二进制文件。

PS:我无法访问源代码,因此我可以编辑代码并使其读取文件。

是否有解决此问题的方法(不编写脚本)

2 个答案:

答案 0 :(得分:2)

您可以使用

    xargs -rn 2 temp.exe < agrsList.txt

-r表示temp.exe仅在有参数时才会运行。 -n 2表示temp.exe最多只能运行两个参数。 如果agrsList.txt中的单词数量为奇数,则temp.exe只会使用一个参数运行,最后一个参数。

有关详细信息,请参阅man xargs

答案 1 :(得分:0)

通常最好处理这个简单的事情 一种“脚本”语言,但它在前面非常直接 C ++也是如此。如果您正在从标准中读取文件:

std::string args;
while ( std::getline( std::cin, args ) ) {
    system( ("temp " + args).c_str() );
}

应该是您所需要的一切。 (但你没有说你想做什么 如果temp失败。)