1

我在 kornshell 脚本中找到了一行代码:

foo=`basename ?BAR?`

问号是什么意思?

谢谢

4

1 回答 1

3
touch BAR ABAR ABARZ
ls ?BAR?
ABARZ

?通常是匹配 1 个字符的 shell 通配符,并且必须使用该 1 个字符位置,如上例所示。这就像 '*' 的 1 字符版本,匹配 1 字符(必须存在)。请注意,如果您更改为

ls ?BAR*

你得到像这样的输出

ABAR  ABARZ

您的代码显示相同的行为

foo=$(basename ?BAR?)
echo $foo
ABARZ

那有意义吗?不是真的,但考虑到您给出的其他可能解释的小上下文是原始脚本编写者?BAR?用作占位符并告诉您“将其更改为真实/有意义的值”。

其他人可能有其他想法。

IHTH

于 2013-04-09T16:20:14.280 回答