Bash - 简单问号(?)的含义

Bash - meaning of a simple question mark (?)

我正在尝试一些 bash 功能,当我尝试回显一些输出时,我注意到,

echo what about in some more complex example ?

结果

what about in some more complex example \

我知道用引号转义问号或整行可以解决问题,但我很好奇为什么会这样。

所以我的两个问题是:

  1. bash 中一个简单问号的含义是什么(例如,我知道“$?”特殊参数和正则表达式的用法)?
  2. 我想这是一个 bash 环境变量或某个变量之王。如何检查变量?例如,可以使用 type 关键字检查命令,即 type cd

在这种情况下,它起到了 glob 模式的作用。如果当前工作目录中有名称为单字符的文件,shell 会将一个不带引号的问号扩展到它们的名称中。

$ echo ? \? '?' "?"
? ? ? ?
$ touch a b c
$ echo ? \? '?' "?"
a b c ? ? ?

类似地,?? 扩展为两个字符的文件名,??* 扩展为超过一个字符的文件名,??[ab] 扩展为以 [=22= 结尾的三个字符的文件名]a 或 a b,等等

有关详细信息,请参阅 Filename Expansion