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 回答