为什么 bash 将我的命令'mysql*'更改为"mysql.sql"?



我确定目录中没有称为mysql.sql的此类文件

操作系统infor

cat /etc/redhat-release 
CentOS Linux release 7.3.1611 (Core) 

我有一个shell脚本。一行是返回nong零代码

yum install -y mysql*  1>/dev/null 2>/dev/null

当我在终端运行此行时,一切都很好,返回代码(echo $?(是零。

但是,在脚本中,它将返回1,然后是-x选项,我可以看到bash将行更改为

yum install -y mysql.sql

为什么MySQL*更改为mysql.sql?

在脚本的当前目录中有一个名为mysql.sql的文件。

引用该论点以避免bash扩展它,以便yum可以。

yum install -y "mysql*"  1>/dev/null 2>/dev/null

通常,如果您不希望将它们作为地球扩展,则您始终想要用*引用参数。默认情况下,如果它们不匹配任何东西,则默认情况下通过它们通过,但通常无法保证,因此最好只是引用它。

最新更新