bash 通配符扩展,即使引用

bash 通配符扩展,即使引用

当前目录包含file1和file2。你如何解释这个输出:

[root@server test]# command='*';
[root@server test]# echo $command
file1 file2

为什么*会被扩展?我希望它不是因为它被引用了。

答案1

command='*'确实如您所期望的那样将 的值设置$command为文字*。但是,当您运行时echo $command, 的值$command将扩展为*,从而使您的命令成为echo *.然后通配符会像往常一样扩展。为了防止这种情况,请引用您提供给的参数echo

$ v='*'
$ echo "$v"
*

相关内容