反斜杠未正确处理为命令行参数

时间:2014-07-28 14:24:18

标签: macos perl

我有一个脚本displaytext.pl,其中包含以下内容

print join(" ",@ARGV),"\n"; 

当我使用

从我的mac终端运行它时
perl displaytext.pl A\B 

我得到了输出:

AB

但是,当我将其作为

运行时
perl displaytext.pl 'A\B' 

输入被正确解释为

A\B

使用引号传递字符串和不使用引号的字符串之间有什么区别。这是否意味着如果我们有任何转义字符,我们是否需要将其作为字符串传递?

1 个答案:

答案 0 :(得分:5)

这与Perl无关。

反斜杠字符\对于shell是特殊的,它解释您在终端中键入的所有内容。

$ echo A\B
AB

为了将它传递给任何命令,即使像echo这样的shell内置,你也必须转义或引用它:

$ echo A\\B
A\B
$ echo 'A\B'
A\B