2

ファイルの内容を別のシェルコマンドのパラメータとして追加するUNIXシェルコマンドを探しています。例えば:

command << commandArguments.txt
4

3 に答える 3

3

xargsはこのために特別に構築されました:

cat commandArguments.txt | xargs mycommand

ファイルに複数の行がある場合はxargs -L1 -P10、コマンドの10個のコピーを一度に並行して実行するために使用できます。

于 2012-08-12T00:02:07.803 に答える
2

xargsはその標準を受け取り、それをシェル コマンドの位置パラメーターとしてフォーマットします。もともとは短いコマンド ライン制限に対処するためのものでしたが、他の目的にも役立ちます。

たとえば、最後の 1 分以内に、10 台のサーバーに並行して接続し、それらのアップタイムをチェックするために使用しました。

echo server{1..10} | tr ' ' '\n' | xargs -n 1 -P 50 -I ^ ssh ^ uptime

このコマンド パイプラインのいくつかの興味深い側面:

  • 接続するサーバーの名前は、着信パイプから取得されました
  • tr、各名前をそれぞれの行に入れるために必要です。これは、xargs行区切りの入力が必要なためです
  • この-nオプションは、コマンド呼び出しごとに使用される着信行数を制御します。 着信行ごと-n 1に新しいプロセスを作成します。ssh
  • デフォルトでは、パラメータはコマンドの末尾に追加されます。では、代わりに引数に置き換えられる-Iトークン ( ) を指定できます。^
  • -P同時に実行する子プロセスの数を制御し、興味深い可能性の領域を大幅に広げます..
于 2012-08-11T23:52:50.873 に答える
1
command `cat commandArguments.txt`

バックティックを使用すると、囲まれたコマンドの結果が外部コマンドのリテラルとして使用されます

于 2012-08-11T23:46:59.477 に答える