gpt4 book ai didi

linux - 在shell中使用perl -e命令时引用问题

转载 作者:太空宇宙 更新时间:2023-11-04 04:43:13 25 4
gpt4 key购买 nike

带双引号

以下命令

$ cat ./multi_meta | jq .Partitions[].DocCount | perl -lne "$x += $_; END{ print $x;}"

给我一​​个语法错误:

syntax error at -e line 1, near "+="
Execution of -e aborted due to compilation errors.

带单引号

我得到了正确的结果

$ cat ./multi_meta | jq .Partitions[].DocCount | perl -lne '$x += $_; END{ print $x;}'

为什么?

最佳答案

因为使用双引号,所以在 Perl 编译器看到代码之前,整个字符串都会通过 shell 的变量扩展机制传递。由于您没有名为 $x$_ 的 shell 变量,Perl 编译器会看到以下内容:

+= ; END{ print ;}

使用单引号,您的 Perl 变量将受到保护,不会被扩展,直到 Perl 编译器可以看到它们为止。

关于linux - 在shell中使用perl -e命令时引用问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54649510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com