GNU parallel:如何格式化替换字符串?

mem*_*ecs 3 parallel-processing bash gnu gnu-parallel

我正在尝试实现以下目标,并且希望使用GNU并行在多个进程上实现

for i in $(seq 0 3); do
 var=$(printf "%.5d" $i)
 echo test_$var
done

 Output:
--------------------
test_00000
test_00001
test_00002
Run Code Online (Sandbox Code Playgroud)

我尝试了这个,但是它不起作用:

parallel var=$(print "%.5d" {})\; echo test_$var ::: $(seq 0 3)
Run Code Online (Sandbox Code Playgroud)

tha*_*guy 5

在并行运行之前,您正在扩展命令替换,这就是为什么它失败的原因。

您可以使用单引号将其避免:

parallel 'var=$(printf "%.5d" {}); echo test_$var' ::: $(seq 0 3)
Run Code Online (Sandbox Code Playgroud)