我已经安装了 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" "$@"
有各种各样的论点。