Bashスクリプトには次のものがあります。
target="-h1.2.3.4 -P3307"
user="-uusername"
pass="-ppassword"
mysql ${target} ${user} ${pass} -se"SHOW DATABSES;"
3307の代わりにポート3306に接続されていることを除いて、正常に動作します。どうすれば正しく読むことができますか${target}
?
target
2つの別々の変数に分割する必要はありません。
手動で実行すると
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の問題なのかはわかりません。