GNUパラレル出力をラインごとのモードで実行するときに実行されるコマンドラインにすることはできますか?

GNUパラレル出力をラインごとのモードで実行するときに実行されるコマンドラインにすることはできますか?

fileにコマンドリストがあるとしましょうcmd_file

次のコマンドでこれらのコマンドを実行します。

cat cmd_file | parallel -k -I {} "{}"

コマンドの1つが失敗しました。すべてのコマンドはまったく同じCLIツールとは異なる入力を使用します。

コマンドリストをコマンドジェネレータループ(より複雑にする)に置き換えて誤ったコマンドを見つけるには、一度に1つのコマンドを実行する必要があります。

for ...; do
  # assemble the vars for the command
  echo "<command>"
  <command>
done

たとえば、失敗したコマンドを並列に表示したり、stderrで実行順序を表示したりするメカニズムはありますか?

ベストアンサー1

あなたは導くことができますparallel実行された各コマンドを標準出力または標準エラーとして印刷します。manページから:

-v  Print the job to be run on stdout (standard output).
    Can be reversed with --silent. See also -t.


-t  Print the job to be run on stderr (standard error).

たぶん:

for ...; do
  # assemble the vars for the command
  echo "<command>"
done |
parallel -v -k

または準備ができたらcmd_file

parallel -v -k < cmd_file

または同様のものがあなたのニーズに適しているでしょう。

おすすめ記事