Feed GNU与数组并行?

时间:2016-03-16 17:35:02

标签: arrays bash gnu-parallel

如何在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

我该怎么做?

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:2)

来自:http://www.gnu.org/software/parallel/man.html

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

请注意:

之间的区别
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[@]}"

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

来引用它们
V="Here  are  two "
parallel echo "'$V'" ::: spaces
parallel -q echo "$V" ::: spaces