Bash - 简单问号(?)的含义
Bash - meaning of a simple question mark (?)
我正在尝试一些 bash 功能,当我尝试回显一些输出时,我注意到,
echo what about in some more complex example ?
结果
what about in some more complex example \
我知道用引号转义问号或整行可以解决问题,但我很好奇为什么会这样。
所以我的两个问题是:
- bash 中一个简单问号的含义是什么(例如,我知道“$?”特殊参数和正则表达式的用法)?
- 我想这是一个 bash 环境变量或某个变量之王。如何检查变量?例如,可以使用 type 关键字检查命令,即
type cd
在这种情况下,它起到了 glob 模式的作用。如果当前工作目录中有名称为单字符的文件,shell 会将一个不带引号的问号扩展到它们的名称中。
$ echo ? \? '?' "?"
? ? ? ?
$ touch a b c
$ echo ? \? '?' "?"
a b c ? ? ?
类似地,??
扩展为两个字符的文件名,??*
扩展为超过一个字符的文件名,??[ab]
扩展为以 [=22= 结尾的三个字符的文件名]a 或 a b,等等
有关详细信息,请参阅 Filename Expansion。
我正在尝试一些 bash 功能,当我尝试回显一些输出时,我注意到,
echo what about in some more complex example ?
结果
what about in some more complex example \
我知道用引号转义问号或整行可以解决问题,但我很好奇为什么会这样。
所以我的两个问题是:
- bash 中一个简单问号的含义是什么(例如,我知道“$?”特殊参数和正则表达式的用法)?
- 我想这是一个 bash 环境变量或某个变量之王。如何检查变量?例如,可以使用 type 关键字检查命令,即
type cd
在这种情况下,它起到了 glob 模式的作用。如果当前工作目录中有名称为单字符的文件,shell 会将一个不带引号的问号扩展到它们的名称中。
$ echo ? \? '?' "?"
? ? ? ?
$ touch a b c
$ echo ? \? '?' "?"
a b c ? ? ?
类似地,??
扩展为两个字符的文件名,??*
扩展为超过一个字符的文件名,??[ab]
扩展为以 [=22= 结尾的三个字符的文件名]a 或 a b,等等
有关详细信息,请参阅 Filename Expansion。