5

コマンド ライン クライアントを呼び出すシェル スクリプトがありますmysql。次のようになります。

 $ 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。それでも、うまくいきません。対話型シェルで直接実行しようとすると、同じことが起こります。

$ 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"

ここで何が起こっているのか、それを修正する方法について誰かが光を当てることができますか? よろしくお願いします。

4

1 に答える 1