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