我输入了echo $ ?
并获得了
$ 1 2 3
通常我应该得到一个$ ?
,所以我打开了一个新的shell,键入echo $ ?
并且我的输出是
$ ?
我尝试触发它,有时它是$ 1 2 3
,有时是$ ?
。它只发生在经典的shell中,在iTerm shell中它运行良好。我使用的是macOS High Sierra版本10.13.4。
为什么输出错误以及如何触发?
答案 0 :(得分:3)
$
本身没有特殊含义。
?
是一个字符通配符。 (相比之下,*
是一个多字符通配符。)?
将替换为当前工作目录中由单个字符组成的任何文件。当您看到1 2 3
作为输出时,请执行ls
,然后您会在目录中找到列为文件的文件。
$ echo ?
?
$ touch 1
$ echo ?
1
$ touch 2
$ echo ?
1 2
$ ls
1
2