パラレルを使用して入力なしでスクリプトを実行する


10

GNUパラレルでスクリプトの多くのインスタンスを実行しようとしていますが、スクリプトは引数を取りません。

「parallel foo.sh」を実行すると、次のようになります。

parallel: Warning: Input is read from the terminal. Only experts do this on purpose. Press CTRL-D to exit.

回答:


10

10回実行したい場合、次の構文が機能します。

parallel -n0 foo.sh ::: {1..10}

parallelある長さ(::: {1..10})の入力シーケンスが必要であり、かつ入力シーケンス(-n0)の内容を無視する必要がある場合は、その長さのみを考慮します。

元のコマンド:parallel foo.shには、必要な並列度を示す入力シーケンスが含まれていません。不可解な警告はparallel、入力シーケンスを求めて端末をリッスンし始めること、そしてこれがおそらくあなたが望むものではないことを伝えています。

これがチュートリアルの例です:

seq 10 | parallel -n0 my_command my_args

使い方:

  • parallel常にどこかから入力シーケンスを取ります。これは:::、ファイルまたはパイプなどのファイルのようなソースからの、または改行で区切られたシーケンスが前に付いた、スペースで区切られたインラインのシーケンスである場合があります。この例では、入力シーケンスはパイプからのものです。
  • seq 10 改行で区切られた1から10の数字のシーケンスを生成します。
  • この-n0オプションは、入力シーケンスの値を無視するようにparallelに指示します。私たちが気にするのはシーケンスの長さであり、その内容ではありません。数字が使用されていない場合でも、コマンドは10回実行されます。

もう一つの例:

parallel -n0 echo -n 'x' ::: {1..5}

使い方:

  • 入力シーケンスはインラインです。
  • {1..5} スペースで区切られた1から5までの数字のシーケンスを生成します。
  • -n0シーケンス値を無視します('x'代わりに毎回文字列をエコーし​​ます)。
  • 出力: xxxxx

と比較:

parallel echo -n ::: {1..5}

使い方:

  • 入力シーケンスはインラインです。
  • {1..5} スペースで区切られた1から5までの数字のシーケンスを生成します。
  • 入力シーケンスの各値は、の引数として使用されますecho。注文は保証されません。
  • 出力:43215。任意の順序である可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.