
bash スクリプトには次の内容があります:
target="-h1.2.3.4 -P3307"
user="-uusername"
pass="-ppassword"
mysql ${target} ${user} ${pass} -se"SHOW DATABSES;"
${target}
これは正常に動作しますが、ポート 3307 ではなくポート 3306 に接続します。正しく読み取るにはどうすればよいですか?
2 つの別々の変数に分割せずにtarget
。
手動で実行すると
mysql -h1.2.3.4 -P3307 -uusername -ppassword
-P3307
すると正常に動作するので、これが私が実現しようとしていることです。MySQL が を無視して、デフォルトの を使用しているかのようです3306
。
すべてを 1 つの変数に入れることも試みましたが、これも機能しません (ポート、ユーザー名、パスワードは無視されます)。
問題は、MySQL が$target
値を 1 つのものとして解釈していることのようです。ポートとホストを切り替えると、次のようになります。
target="-P3307 -h1.2.3.4"
mysql ${target} ${user} ${pass} -se"SHOW DATABSES;"
次のような結果になります:
Unknown suffix ' ' used for variable 'port' (value '3307 -h1.2.3.4')
mysql: Error while setting value '3307 -h1.2.3.4' to 'port'
それで、それが MySQL の問題なのか Linux の問題なのかはわかりません。