Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash Perl:Can';t将问号作为命令行参数传递_Bash_Perl - Fatal编程技术网

Bash Perl:Can';t将问号作为命令行参数传递

Bash Perl:Can';t将问号作为命令行参数传递,bash,perl,Bash,Perl,我无法将问号字符传递到Perl脚本中。取而代之的是字母“t” 我找不到任何解释。我想通过问号的原因是我的脚本有一个简单的帮助选项。其他特殊字符也起作用,引用问号也起作用,问号与其他字符串混合也起作用。这只是一个单独的、赤裸裸的问号 我通过bashshell调用脚本。我不是100%肯定这是一个Perl问题 更新:现在这个问题得到了回答,我突然意识到:这就是大多数命令行参数前面都有破折号的原因吗?在运行脚本的目录中有一个名为t的文件。shell将问号(?)视为单个字符,并在将参数传递给脚本之前对其

我无法将问号字符传递到Perl脚本中。取而代之的是字母“t”

我找不到任何解释。我想通过问号的原因是我的脚本有一个简单的帮助选项。其他特殊字符也起作用,引用问号也起作用,问号与其他字符串混合也起作用。这只是一个单独的、赤裸裸的问号

我通过bashshell调用脚本。我不是100%肯定这是一个Perl问题



更新:现在这个问题得到了回答,我突然意识到:这就是大多数命令行参数前面都有破折号的原因吗?

在运行脚本的目录中有一个名为
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
,但不匹配e> b1.txt

以下shell元字符作为命令行参数的一部分时,必须始终转义或引用:

|&;<>()$``'
这些字符有时必须转义:

*?[#=%
此外,符号
!{}[[]]
是保留字


(摘自.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?