在 bash 中用方括号回显字符串返回“b”

Cod*_*321 10 bash

$ a='"apple","ball","cat"'
$ a='['$a
$ echo $a
["apple","ball","cat"
$ a=$a']'
$ echo $a
b
Run Code Online (Sandbox Code Playgroud)

b当我期待看到时,我被结果难住了["apple,"ball","cat"]。我在这里缺少什么?

这是来自bashMac 上的 shell。也可以在 CentOS 7 上看到它,而不是在 Fedora 上。有人可以解释一下吗?

Hau*_*ing 27

b当前目录中有一个同名的文件。

[...]
Run Code Online (Sandbox Code Playgroud)

是一个模式匹配表达式。这其中每一个的名称之间由一个字母的文件匹配[]

这类似于*使用变量值并使用不带引号的变量。

  • 有关加载更多信息:[忘记在 bash/POSIX shell 中引用变量的安全隐患](https://unix.stackexchange.com/q/171346/4667) (6认同)
  • +1 不错的收获。我想这里的推论是,变量在使用时应该被引用(`echo "$a"` 写出 `$a` 的字面值)。 (2认同)