並列コマンド文字列内の置換

並列コマンド文字列内の置換

複数のファイルをダウンロードして、その名前の合計をmd5に保存したいと思います。

cat list | parallel -j4 "md5=$(wget -O - {} | tee tmpfile_{#} | md5sum | cut -d ' ' -f 1); mv tmpfile_{#} $md5"

しかし、問題はbashが並列置換を実行する前にwgetエントリを実行しているようです{}。だからwgetは次から始めようとしています。http://{}

もしそうなら、サブコマンドが実行される前に並列はどのようにその変数を置き換えますか?

ベストアンサー1

後でいくつかの試行錯誤を受けました。

cat list | parallel -j4 'md5=$(wget -O - {} | tee tmpfile_{#} | md5sum); mv tmpfile_{#} ${md5%% *}'

bashが最初に何かを置き換えることを許可したくない場合は、交換のみを"実行してください。'

おすすめ記事