我知道,我可以使用“并行”在一个给定增量的variables上并行运行任何脚本/应用程序的多个实例,例如:
parallel "echo hello {}" ::: {1..16..2}
输出将是:
hello 1 hello 3 hello 5 hello 7 hello 9 hello 11 hello 13 hello 15
我想使用一个增量运行variables,使我得到这样的输出:
hello 1 hello 2 hello 4 hello 8 hello 16
我应该在{1..16 ..#}中写什么?
谢谢!
尝试这个:
parallel "echo hello {}" ::: $(awk 'BEGIN {for(i=0; i<=16; i++) printf 2**i" "}')
awk
被用来打印出2个幂的列表,然后被parallel
。
或者:
parallel "echo hello {}" ::: $(printf '%s\n' 2^{0..16} | bc | tr '\n' ' ')
这将打印出数字1到16作为字符串x^2
, printf
确保每个数字都在一个单独的行上。 bc
然后计算实际的数字,并tr
再次删除换行符。
使用{= =}(在版本20140822和更高版本中可用):
seq 1 2 16 | parallel echo hello {} parallel echo hello '{= $_=2*$_ =}' ::: {1..16} seq 1 16 | parallel echo hello '{= $_=2**$_ =}' parallel echo hello '{= $_=2**$_ =}' ::: {1..16}