有没有办法在GNU并行中使用其输入进行计算?

时间:2017-03-23 21:14:23

标签: linux bash shell gnu-parallel

我在linux上使用GNU parallel并且我想在其中进行一些计算,但我无法用它来代替输入。

从这开始,这很好用:

parallel echo {1} {2} ::: {1..2} ::: {1..2}

输出:

1 1
1 2
2 1
2 2

我想做这样的事情:

parallel echo {1} $(({2} *2)) ::: {1..2} ::: {1..2}

但我得到的只是:

bash: {2} * 2: syntax error: operand expected (error token is "{2} * 2")

我尝试使用expr,但问题是相同的,第二个参数无法替代:

parallel echo {1} $(expr {2} \* 2 ) ::: {1..2} ::: {1..2}
expr: non-integer argument
1
1
2
2

有没有办法让它发挥作用?

1 个答案:

答案 0 :(得分:1)

parallel echo {1} '{=1 $_=$arg[2]*2 =}' ::: {1..2} ::: {1..2}

您不仅限于使用单个参数进行计算:

parallel echo {1} '{=1 $_=$arg[1]/$arg[2] =}' ::: {1..2} ::: {1..2}

如果你喜欢在shell中做,你只需要引用它:

parallel echo {1} '$(expr {2} \* 2 )' ::: {1..2} ::: {1..2}