44317


port forwardingを使って、リモートでMySQLにアクセスする方法について質問させていただきます。

以下に簡単なdemo script（demo.sh）を作成しました。

[code]

    echo $1;
    echo $2;
    echo "$HOME/local/bin/mysql -u user -D WB -h$1 --port=$2"　　（<-ここのコマンドは正常に動きます。）
    
    query() {
        $HOME/local/bin/mysql -u user -D WB -h$1 --port=$2
    }
    
    query "begin;\
             #some command for MySQL
          commit;"
    
[/code]

OSはubuntu16.04を使って、portの番号を13306に設定しております。

[code]

    bash demo.sh xxxx 13306
    (xxxは実際のIP addressです。)
    
[/code]

とタイプしますと、  
mysql: [ERROR] /home/user/local/bin/mysql: Empty value for 'port' specified  
というエラーが出てきます。  
自分の理解では、portの番号が指定されていないことがエラーの原因だと思います。

しかし、3番目のechoの結果を、直接terminalにコピペしますと、正常にMySQLにアクセスできます。このことより、コマンド自体は問題ないと考えております。

質問ですが、bash scriptではEmpty value for 'port'
specifiedとなってしまっている部分を、何とかport番号を指定する方法はありますでしょうか？

ーPオプションも試してみましたが、問題は解決しませんでした。

もし何方かご存知でしたら、ご教授をお願いします。  
何卒宜しくお願い致します。


CC BY-SA 4.0
2018-05-28T03:57:44.017
44315
2018-05-28T05:42:40.717
2018-05-28T05:42:40.717
3060
11048
question
mysql ubuntu bash
MySQLのport番号をシェルスクリプトの関数内で指定する方法


3行目のechoコマンドを query() の中に移動してみれば原因がわかると思います。  
関数内の $1 $2 等は、関数外の値を引き継ぎません。関数呼び出し時に与えられた引数になります。

今回のスクリプトの場合は $1 は "begin;～" の文字列になり、$2 は空になります。


CC BY-SA 4.0
2018-05-28T04:45:34.287
44317
2018-05-28T04:45:34.287
3249
44315
answer