我正在尝试在 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")
但是每当我尝试运行它时,我总是收到“闭引号后的额外字符”。 我尝试过双引号和单引号的变体,但似乎没有任何效果。 谁能告诉我我在这里做错了什么?
最佳答案
尝试转义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")
关于Mysql 客户端在 ssh 内期望引用烦恼,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11395498/