並行命令字串內的替換

並行命令字串內的替換

我想下載多個檔案並將它們保存到其名稱的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 先替換某些內容

相關內容