gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 06:02:35 24 4
gpt4 key购买 nike

我确信目录中没有名为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 会按字面意思传递它们,但您通常不能保证这一点,因此最好只引用它。

关于linux - 为什么 bash 将我的命令 'mysql*' 更改为 'mysql.sql' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56018848/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com