変数が正しく読み取られない

変数が正しく読み取られない

Bashスクリプトには次のものがあります。

target="-h1.2.3.4 -P3307"
user="-uusername"
pass="-ppassword"

mysql ${target} ${user} ${pass} -se"SHOW DATABSES;"

3307の代わりにポート3306に接続されていることを除いて、正常に動作します。どうすれば正しく読むことができますか${target}

target2つの別々の変数に分割する必要はありません。


手動で実行すると

mysql -h1.2.3.4 -P3307 -uusername -ppassword

それではうまくいきます。これがまさに私が達成したいものです。これはMySQLが-P3307デフォルト値を無視して使用するのとほぼ同じです3306

また、すべてを変数に入れようとしましたが、それも機能しませんでした(ポート、ユーザー名、およびパスワードは無視されました)。


問題は、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の問題なのかはわかりません。

関連情報