我试图弄清楚如何在命令行上将参数(文件中的内容)作为参数发送给 cpp 函数。我不想通过标准输入发送它。
我有一个名为 foo.cpp 的函数:
$ cat foo.cpp
#include <iostream>
int main (int argc, char *argv[]) {
for (int i = 1; i < argc; i++)
std::cout << argv[i] << std::endl;
return 0;
}
$ g++ -o foo foo.cpp
$ ./foo hello world
hello
world
在执行的最后一个命令中,我将参数“hello world”传递到程序中。但是,如果我的文件中有“hello world”怎么办?例如:
$ cat footest.args
$ hello world
我如何将 footest.args 的内容传递到 ./foo 中,如上所述?我试过了
./foo | cat footest.args
但它似乎不起作用。我究竟做错了什么?
答案1
您想要获取命令的输出并将其转换为参数。尝试命令替换:
./foo $(< footest.args)
答案2
您可以通过以下方式实现您想要的:
cat footest.arg | xargs ./foo
或(感谢@glenn)
xargs ./foo < footest.arg
避免一种不必要的使用cat
。