我有一个调用mysql
命令行客户端的 shell 脚本,它看起来像这样:
$ cat ms
mysql --host=titanic --user=fred --password="foobar"
它工作正常:
$ ./ms
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 810
...
现在,我想将脚本保存在 git 存储库中,但没有用户和密码详细信息。所以,我想我会有一个文件SECRET
:--host=titanic --user=fred --password="foobar"
我不会将它添加到 git 存储库中,并ms
像这样更改脚本:
mysql $(cat SECRET)
不幸的是,它不起作用。运行时出现此错误:
$ ./ms
ERROR 1045 (28000): Access denied for user 'fred'@'example.com' (using password: YES)
我无法理解 - 当$(cat SECRET)
被评估/扩展时,它看起来与 . 的直接调用完全相同mysql
。尽管如此,它还是行不通。如果我尝试直接在交互式 shell 中执行此操作,也会发生同样的情况:
$ mysql --host=titanic --user=fred --password="foobar"
工作正常,但以下没有:
$ cat SECRET
--host=titanic --user=fred --password="foobar"
$ mysql $(cat SECRET)
ERROR 1045 (28000): Access denied for user 'fred'@'example.com' (using password: YES)
$ echo mysql $(cat SECRET)
mysql --host=titanic --user=fred --password="foobar"
任何人都可以阐明这里发生了什么以及如何解决它?提前谢谢了。