1

次の行を含むbashスクリプトがあります

mysql -uusername -ppassword -e 'UPDATE \'table-name.config\' SET value=1234567890 WHERE action_code=102 AND name=\'last_updated_date\';'

しかし、私は得る

./hybrid_telepath/install: line 856: unexpected EOF while looking for matching `''
./hybrid_telepath/install: line 872: syntax error: unexpected end of file

明らかに、私は自分のキャラクターに問題があり、ラインをうまく閉じていません.

bashでそれを行う方法はありますか?

に変更すると

mysql -uusername -ppassword -e "UPDATE `table-name`.`config` SET value=1312626266 WHERE action_code=102 AND name='last_updated_date';"

私は得る

line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET value=1312626266 WHERE action_code=102 AND name=last_updated_date' at line 1

ありがとう

4

4 に答える 4

1

これを試して:

mysql -uusername -ppassword -e "UPDATE \'table-name.config\' SET value=1234567890 WHERE action_code=102 AND name=\'last_updated_date\';"
于 2013-10-25T19:50:42.077 に答える
1

前のポスターは正しいです。二重引用符を使用するという提案に加えて、queryString の作成を個別に開始することをお勧めします。この練習は、スクリプト作成が上達する (そして、うまくいけば、Python のようなものに移行する) ときに役立ちます。また、スクリプトでデータベース資格情報をハードコーディングすることもお勧めできません。これらの値を別の場所 (つまり、別のスクリプト) で定義してから、そのスクリプトをソースすることができることに注意してください。これにより、コードがモジュール化されます。さらに良いことに、関数を作成し、ソースを作成し、再利用します。次に例を示します。

#!/bin/bash
. /etc/myDbCreds

myQuery="select * from foo where bar ='snafu';"

mysql -u $myUser -p${myPass} -e $myQuery
于 2013-06-06T16:17:20.883 に答える