Bash Perl:Can';t将问号作为命令行参数传递
我无法将问号字符传递到Perl脚本中。取而代之的是字母“t” 我找不到任何解释。我想通过问号的原因是我的脚本有一个简单的帮助选项。其他特殊字符也起作用,引用问号也起作用,问号与其他字符串混合也起作用。这只是一个单独的、赤裸裸的问号 我通过bashshell调用脚本。我不是100%肯定这是一个Perl问题Bash Perl:Can';t将问号作为命令行参数传递,bash,perl,Bash,Perl,我无法将问号字符传递到Perl脚本中。取而代之的是字母“t” 我找不到任何解释。我想通过问号的原因是我的脚本有一个简单的帮助选项。其他特殊字符也起作用,引用问号也起作用,问号与其他字符串混合也起作用。这只是一个单独的、赤裸裸的问号 我通过bashshell调用脚本。我不是100%肯定这是一个Perl问题 更新:现在这个问题得到了回答,我突然意识到:这就是大多数命令行参数前面都有破折号的原因吗?在运行脚本的目录中有一个名为t的文件。shell将问号(?)视为单个字符,并在将参数传递给脚本之前对其
更新:现在这个问题得到了回答,我突然意识到:这就是大多数命令行参数前面都有破折号的原因吗?在运行脚本的目录中有一个名为
t
的文件。shell将问号(?
)视为单个字符,并在将参数传递给脚本之前对其进行扩展。例如,如果您有一个名为xx
的文件,那么使用??
运行脚本将打印“xx”
如果引用脚本的参数,则不会发生shell扩展,并且传递
?
或*
或?
仍然不被解释。在运行脚本的目录中有一个名为t
的文件。shell将问号(?
)视为单个字符,并在将参数传递给脚本之前对其进行扩展。例如,如果您有一个名为xx
的文件,那么使用??
运行脚本将打印“xx”
如果引用脚本的参数,则不会发生shell扩展,并且传递的
?
或*
或?
不会被解释。问号?
是用于全局扩展的shell元字符。它是单个字符的占位符,类似于正则表达式中的
。例如,如果我有文件a1.txt a2.txt b1.txt
,则全局模式a?.txt
将匹配a1.txt
和a2.txt
,但不匹配b1.txt
以下shell元字符作为命令行参数的一部分时,必须始终转义或引用:
|&;<>( ) $ ` \ " '
这些字符有时必须转义:
*?[#=%
此外,符号!{}[[]]
是保留字
(摘自.Bash,大部分与POSIX兼容。)问号
?
是一个用于全局扩展的shell元字符。它是单个字符的占位符,类似于正则表达式中的
。例如,如果我有文件a1.txt a2.txt b1.txt
,则全局模式a?.txt
将匹配a1.txt
和a2.txt
,但不匹配|&;<>()$``'
这些字符有时必须转义:
*?[#=%
此外,符号!{}[[]]
是保留字
(摘自.Bash,基本上与POSIX兼容。)实际上,我在目录中有一个名为“t”的文件。我使用名为“t”的文件作为临时临时临时临时临时便笺文件。实际上,我在目录中有一个名为“t”的文件。我使用名为“t”的文件作为临时便笺文件。
./myscript foo
print $ARGV[0]; # prints foo
./myscript ?
print $ARGV[0]; # prints t
./myscript "?"
print $ARGV[0]; # prints ?
./myscript ??
print $ARGV[0]; # prints ?? (multiple question marks work)
./myscript ^
print $ARGV[0]; # prints ^; other special characters work too
./myscript foo?
print $ARGV[0]; # prints foo?