我注意到当我尝试回声?时,它会打印1。
我读到它是一张“外卡(单个字符)。[问号]?字符作为单字符”外卡“用于在globbing中进行文件扩展,以及在扩展常规中表示一个字符表达。” (正如我在网上看到的标题为“Advanced Bash-Scripting Guide:shell脚本的完整指南,使用Bash”的文档中所写的)。
$ echo ?
1
$ echo ? ? ?
1 1 1
$ echo ? 1 ?
1 1 1
$ ls shai?n
shai.txt
bash --version
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
答案 0 :(得分:5)
?
扩展为所有一个字符文件或自身(如果不存在)*
扩展到所有文件或自身(如果没有eixsts 因此,只有在工作目录中有一个名为1
的单字符文件时才会发生这种情况。 e.g。
> mkdir emptydir && cd emptydir
> echo ?
?
> touch 1 && echo ?
1
另请注意,评论指出您可以通过执行echo "?"
或echo \?
答案 1 :(得分:2)
您可能在当前工作目录中有一个名为“1”的文件。
# echo ?
?
# touch 1
# echo ?
1
答案 2 :(得分:1)
使用bash的nullglob
option,您可以禁止将glob模式打印为字符串:
$ echo ?
?
$ shopt -s nullglob
$ echo ?
$ touch A
$ echo ?
A