GNU Parallel中的数学

ant*_*ong 2 bash perl gnu-parallel

我要做的一件事就是在GNU Parallel中使用{%}选项进行一些数学运算

cat short | parallel -j 2 echo my_prog ----in {} ----out {/.}.extension ----gpu {= {%}+1 =} {= {%}-1 =}
Run Code Online (Sandbox Code Playgroud)

(我在前面的额外破折号in,outgpu以防万一.)

内显示的数学{= =}是所有我需要做的,我只是不知道我知道如何将它与写--rpl--parens

{= =} 是可以在GNU parallel中编写Perl表达式的空间.

此外我的程序没有在这里运行,我只是回显输出,看看是否一切都是正确的.

有人可以解释如何在命令中执行这个简单的数学运算吗?

我的错误是这样的:

parallel: Error: Cannot use {%}+1 : Missing right curly or square bracket at (eval 13) line 2, at end of line
syntax error at (eval 13) line 2, at EOF
Run Code Online (Sandbox Code Playgroud)

ike*_*ami 6

问题#1

您需要转义Perl程序,以便它不会被shell处理.在程序周围使用单引号是常用的方法.

问题#2

看起来{%}没有被替换{= =},这是有道理的.{= =}说" 你可以完全访问所有GNU并行的内部函数和数据结构 ",所以它成为了一个查找提供插槽号的var/fun的问题.

问题#3

它是$_插入命令的值,因此您需要将总和分配给$_.

{= '$_ = $job->slot() + 1' =}
Run Code Online (Sandbox Code Playgroud)