我正在开发一个shell脚本,我必须执行从一个服务器到远程数据库服务器的MySQL查询。我写过这个剧本。脚本工作正常,直到我添加
where socialr_host = "http://$NEW/"
我认为这是“内部”的问题。请帮助我,我对shell脚本没有太多了解
SERVER_USER="root"
SERVER_HOST="192.168.0.13"
MYSQL_HOST="localhost"
MYSQL_PASS="pass"
MYSQL_USER="root"
CORES_DATABASE="/root/Desktop/cores.db"
CORES_FILESYSTEM="/root/Desktop/cores.disk"
DIFF_FILE="/root/Desktop/diff.txt"
CORES_PATH="/raid/solr/cores"
NEW="db6055.da2"
ssh $SERVER_USER@$SERVER_HOST " mysql -u $MYSQL_USER -p$MYSQL_PASS -e 'select coloumn_name from table_name where socialr_host = "http://$NEW/";' database" > $CORES_DATABASE
答案 0 :(得分:1)
你需要在双引号内转义双引号:
ssh $SERVER_USER@$SERVER_HOST " mysql -u $MYSQL_USER -p$MYSQL_PASS -e 'select coloumn_name from table_name where socialr_host = \"http://$NEW/\";' database" > $CORES_DATABASE
但是,您的代码还有其他一些问题,我会避免将Bash用于这样复杂的事情。如果您坚持使用Bash,请至少阅读quoting和SSH quoting。