2016-08-26 16 views
1

私はbashスクリプトからMySQLのコマンドラインツールを使用しようとしている。HOWTOは予防すること」と「シナリオをめちゃくちゃ、bashで正しい方法をmysqlコマンド文字列を構築する?

を私が干渉する2例を持っています変数が含まれてい文字意志論理「

rcolumn="Teststring cont'aining a character" 
COMMAND="UPDATE "$IMPORT_TABLE" SET colunm='"$rcolumn"' WHERE stepno="$rstepno" ;" 
mysql -u "$USER" --password="$PASS" -D "$DATABASE" -e "$COMMAND" 

が今明らかにこの意志はめちゃくちゃにmysqlコマンドを追加。」:お互い

ケース1と同盟者を破る。

UPDATE table SET colunm='Teststring cont'aining a character' WHERE stepno=1 ;" 

ケース1 - 固定は:問題の上解決するために、私は少し

rcolumn="Teststring cont'aining a character" 
COMMAND="UPDATE "$IMPORT_TABLE" SET colunm=\""$rcolumn"\" WHERE stepno="$rstepno" ;" 
mysql -u "$USER" --password="$PASS" -D "$DATABASE" -e "$COMMAND" 

今固定コマンドは以下のようになります。コードを変更する - それが、この場合

UPDATE table SET colunm="Teststring cont'aining a character" WHERE stepno=1 ;" 
のために動作します

しかし、これはケース2を導入します。変数に"文字

rcolumn="Teststring cont"aining a character" 
COMMAND="UPDATE "$IMPORT_TABLE" SET colunm=\""$rcolumn"\" WHERE stepno="$rstepno" ;" 
mysql -u "$USER" --password="$PASS" -D "$DATABASE" -e "$COMMAND" 

この場合、上記の修正は論理的には機能しません。

UPDATE table SET colunm="Teststring cont"aining a character" WHERE stepno=1 ;" 

どうすればこの問題を最も効果的に解決できますか?

+0

、いくつかのコマンドは両方を含んでいてもよいよう** "**と** '**今私のために同じ時間 –

+0

の文字** ' **とこの問題を克服するために**実際の解決策ではありません;-) –

+0

おそらくタイプミス、あなたは 'column'の代わりに' colunm'を言っています。 – fedorqui

答えて

0

何がしなければ:

rcolumn="Teststring cont'aining a character" 
COMMAND="UPDATE "$IMPORT_TABLE" SET colunm="$rcolumn" WHERE stepno="$rstepno" ;" 
COMMAND=$"$COMMAND" 
mysql -u $"$USER" --password=$"$PASS" -D $"$DATABASE" -e "$COMMAND" 

ソース:またhttp://wiki.bash-hackers.org/syntax/quoting#ansi_c_like_strings

+0

それはうまくいきません。文字列は次のようになります。 .... SET column = rcolumn ......変数内容の代わりに変数名を設定する –

+0

試してみたいと思ったらコードを変更しました。うまくいかない場合は申し訳ありませんが、これを試すことはできません私自身 ;) –

関連する問題