在命令行上传递文件的内容

在命令行上传递文件的内容

我试图弄清楚如何在命令行上将参数(文件中的内容)作为参数发送给 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

相关内容