我在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
有没有办法让它发挥作用?
答案 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}