在 Bash 中,为什么"echo ?"会打印 1?

  • 本文关键字:echo 打印 Bash bash glob
  • 更新时间 :
  • 英文 :


我注意到当我尝试回声时,它会打印1。

我读到这是"通配符(单个角色)。表达。"(如我在网上阅读的文档中所写的标题为"高级弹刀施法指南:使用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)
  • ?如果不存在,将扩展到所有一个字符文件
  • *如果没有EIXSTS
  • ,将扩展到所有文件或本身

因此,只有这样的方法是,如果您在工作目录中有一个称为1的单字符文件。例如

> mkdir emptydir && cd emptydir 
> echo ?
?
> touch 1 && echo ?
1

还要注意,当评论指出,您可以通过执行echo "?"echo ?

来打印它

您可能在当前工作目录中有一个名为'1'的文件。

# echo ?
?
# touch 1
# echo ?
1

带有bash的nullglob选项,您可以抑制以字符串打印图案:

$ echo ?
?
$ shopt -s nullglob
$ echo ?
$ touch A
$ echo ?
A

相关内容

  • 没有找到相关文章

最新更新