并行命令字符串内的替换

并行命令字符串内的替换

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

相关内容