GNU与Perl表达式并行; zsh:在}}附近解析错误

时间:2017-10-26 19:20:42

标签: bash macos perl zsh gnu-parallel

尝试运行此示例命令(来自手册页):

seq 10 | parallel echo {} + 1 is {= '$_++' =}

我收到错误

zsh: parse error near `}'

如何修复此问题并在并行命令中使用{=perl expression=}替换字符串?

我在macOS上的iTerm 2中使用zsh。

2 个答案:

答案 0 :(得分:4)

与任何命令一样,如果不加引号,引用zsh将尝试解释的任何内容。

seq 10 | parallel 'echo {} + 1 is {= $_++ =}'

在这种情况下,parallel只是将各种元素连接成一个字符串,然后将其置于自己的解析中,然后将结果传递给shell;你也可以只传递一个字符串来开始。

答案 1 :(得分:0)

(感谢@MarkSetchell

这对我很有用:

seq 10 | parallel --parens ,,,, echo {} + 1 is ,, '$_++' ,,

--parens设置为,,,,,然后将perl表达式引用为,,perl expression,,