我想下载多个文件并将它们保存到其名称的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 首先替换某些内容