0

私はbashスクリプトで以下を実行しようとしています:

REPLICATION_USER_SETUP=$(expect -c "spawn ssh $LDAP_USER@$MASTER_IP_ADDRESS \"mysql --user=$MYSQL_USER --socket=$MYSQL_SOCKET --execute \"GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO \'$MYSQL_REPLICATION_USER\'@\'$SLAVE_IP_ADDRESS\' IDENTIFIED BY \'$MYSQL_REPLICATION_PW\';\"\";expect Password:;send $LDAP_PASS\r;interact")

しかし、実行しようとするたびに「終了引用符の後に余分な文字」が表示され続けます。二重引用符と単一エスケープ引用符のバリエーションを試しましたが、何も機能していないようです。ここで私が間違っていることを誰かに教えてもらえますか?

4

1 に答える 1

1

SQLクエリのバックスラッシュをエスケープしてみてください:

REPLICATION_USER_SETUP=$(expect -c "spawn ssh $LDAP_USER@$MASTER_IP_ADDRESS \"mysql --user=$MYSQL_USER --socket=$MYSQL_SOCKET --execute \\\"GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO \'$MYSQL_REPLICATION_USER\'@\'$SLAVE_IP_ADDRESS\' IDENTIFIED BY \'$MYSQL_REPLICATION_PW\';\\\"\";expect Password:;send $LDAP_PASS\r;interact")
于 2012-07-09T16:37:01.657 に答える