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

Passing each line of a file as command line argument to a binary file

本文关键字:命令行 参数传递 二进制文件 一行 文件      更新时间:2023-10-16

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

此二进制文件(temp.exe)包含两个命令行参数ab

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

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

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

PS:我没有访问源代码的权限,因此我可以编辑代码并使其读取文件

有没有一种方法可以解决这个问题(无需编写脚本)

您可以使用

    xargs -rn 2 temp.exe < agrsList.txt

-r意味着temp.exe仅在存在参数的情况下运行。-n 2意味着temp.exe最多使用两个参数运行。如果agrsList.txt中有奇数个字,那么temp.exe将只运行一个参数,即最后一个参数。

有关更多信息,请参阅man xargs。

这样简单的事情通常最好由一种"脚本"语言,但它在C++。如果您正在从中的标准读取文件

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

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