使用自有脚本的参数运行 mysql 时出现问题

使用自有脚本的参数运行 mysql 时出现问题

我已经安装了 Xubuntu 16.04 和 mysql 5.7 服务器。

我创建了名为的简单脚本mysql-wrapper

#!/bin/bash
mysql -u myuser -pmypwd mydatabase --table $*

现在我运行命令并且它成功执行:

mysql-wrapper -e "STATUS"

然后我尝试运行下一个命令(带空格):

mysql-wrapper -e "SHOW TABLES"

我遇到问题:mysql 打印命令帮助,例如我使用非法命令运行 mysql。

我该如何解决我的问题?或者使用别名可能更好?

答案1

在普通用法中,你不应该有任何理由使用普通的$*。你应该始终使用"$@"(请注意包含引号):

#!/bin/bash
mysql -u myuser -pmypwd mydatabase --table "$@"

只有"$@"将脚本参数按原样传递给命令,才可以避免字段拆分和通配。

要查看差异,请运行包含以下内容的脚本:

#!/bin/bash
printf "%s\n" $*
printf "%s\n" $@
printf "%s\n" "$*"
printf "%s\n" "$@"

有各种各样的论点。

相关内容