我确信目录中没有名为mysql.sql的文件

操作系统信息

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

我有一个 shell 脚本。其中一行返回非零代码

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 

一般来说,如果您不希望将参数扩展为全局变量,那么您总是希望用 * 引用参数。默认情况下,如果它们不匹配任何内容,Bash 会按字面意思传递它们,但您通常不能保证这一点,因此最好只引用它。


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!