与数组并行馈送 GNU?

Feed GNU parallel with an array?

如何在 GNU 中与数组并行地提供命令?例如,我有这个数组:

x=(0.1 0.2 0.5)

现在我想将它提供给 parallel

中的某个命令
parallel echo ::: $x

这不起作用。它将所有参数提供给单个调用,因为它打印

0.1 0.2 0.5

而不是

0.1
0.2
0.5

这是

的输出
parallel echo ::: 0.1 0.2 0.5

我怎样才能做对?

如果您想提供数组中的所有元素,请使用:

parallel echo ::: ${x[@]}

发件人:http://www.gnu.org/software/parallel/man.html

示例:使用 shell 变量 使用 shell 变量时,您需要正确引用它们,否则它们可能会在 space 上拆分。

注意区别:

V=("My brother's 12\" records are worth <$$$>"'!' Foo Bar)
parallel echo ::: ${V[@]} # This is probably not what you want

和:

V=("My brother's 12\" records are worth <$$$>"'!' Foo Bar)
parallel echo ::: "${V[@]}"

当在包含特殊字符(例如 space)的实际命令中使用变量时,您可以使用 '"$VAR"' 或使用 "'s 和 -q:

V="Here  are  two "
parallel echo "'$V'" ::: spaces
parallel -q echo "$V" ::: spaces