コマンドラインからファイルの内容を渡す

コマンドラインからファイルの内容を渡す

コマンドラインで引数(ファイルの内容)を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

関連情報