
複数のファイルをダウンロードし、その名前の md5 サムに保存したい:
cat list | parallel -j4 "md5=$(wget -O - {} | tee tmpfile_{#} | md5sum | cut -d ' ' -f 1); mv tmpfile_{#} $md5"
しかし問題は、bashが並列置換の実行前にwgetのものを実行するように見えることです{}
...そのため、wgetはダウンロードしようとしますhttp://{}
では、サブコマンドの実行前に parallel はどのようにして変数を置き換えることができるのでしょうか?
答え1
試行錯誤の末、
cat list | parallel -j4 'md5=$(wget -O - {} | tee tmpfile_{#} | md5sum); mv tmpfile_{#} ${md5%% *}'
単に置き換える"
だけでは、'
bash が何かを先に置き換えることはできません。