你能帮我理解为什么会发生这种情况吗:
$ echo [023456789]
[023456789]
$ echo [0123456789]
1
根据您的反馈,我希望能够弄清楚如何编写一个 bash 脚本,该脚本可以采用值为 [0123456789] 的参数并将该文字字符串分配给变量。
答案1
当前目录中有一个名为“1”的文件。
echo [0123456789]
是一个通配符命令,它告诉 bash 显示当前目录中名称由单个数字组成的任何文件的名称。如果不存在这样的文件,echo 将显示通配符规范本身。
注意:
$ mkdir /tmp/new-directory
$ cd /tmp/new-directory
$ echo [0123456789]
[0123456789]
$ touch 1 2 4 8
$ echo [0123456789]
1 2 4 8
如果您想按字面显示该字符串,而不是显示它匹配的文件名,请将字符串括在引号中:
$ echo "[0123456789]"
[0123456789]