2016-03-16 25 views
5

如何在GNU并行数组中提供命令?例如,我有这样的数组: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 

输出如何能做到这一点吗?

回答

4

如果要提供在阵列中使用的所有元素:

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

我想在未来任何数组元素包含空格的情况下,最好使用'“$ {x [@]}”'' 'x =(“0.1 + 6”“0.2 - b”“0.5 + a”)' –

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''或使用''和-q:

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