GNUパラレルでスクリプトの多くのインスタンスを実行しようとしていますが、スクリプトは引数を取りません。
「parallel foo.sh」を実行すると、次のようになります。
parallel: Warning: Input is read from the terminal. Only experts do this on purpose. Press CTRL-D to exit.
GNUパラレルでスクリプトの多くのインスタンスを実行しようとしていますが、スクリプトは引数を取りません。
「parallel foo.sh」を実行すると、次のようになります。
parallel: Warning: Input is read from the terminal. Only experts do this on purpose. Press CTRL-D to exit.
回答:
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
。任意の順序である可能性があります。