为什么“echo [0123456789]”返回“1”?

为什么“echo [0123456789]”返回“1”?

你能帮我理解为什么会发生这种情况吗:

$ 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]

相关内容