6

argvからコマンドライン引数を読み取るCプログラムがあります。ファイルの内容をコマンドライン引数としてプログラムにリダイレクトするパイプを作成することは可能ですか?arguments.dat次の内容のファイルがあるとします。

0 0.2 302 0

そして、私は自分のプログラムを次のように呼び出したいと思っています。

./myprogram 0 0.2 302 0

私は次のことを試しました:

cat arguments.dat | ./myprogram

成功せずに。

4

3 に答える 3

14

xargsあなたの答えは:

cat arguments.dat | xargs ./myprogram

または簡単:

xargs -a arguments.dat ./myprogram

をカスタマイズする多くの方法については、マニュアルを確認してくださいxargs。たとえば、単語ではなく行ごとに読み取ることができ、より複雑な置換で引数を使用できます。

于 2011-07-05T15:21:57.360 に答える
9

ほとんどのシェルでは、ファイルの内容をコマンド ラインに挿入できます$(<filename)

./myprogram $(<arguments.dat)

シェルがそれをサポートしていない場合は、古い方法のいずれかが機能します。

./myprogram $(cat arguments.dat)
./myprogram `cat arguments.dat`   # need this one with csh/tcsh

(コマンドライン引数とファイル入力の違いを知っていますよね? なぜコマンドライン引数をプログラムにパイプすることを期待するのでしょうか?)

于 2011-07-05T15:24:56.270 に答える