shell脚本问题可能是因为引号

时间:2015-07-25 09:25:39

标签: mysql bash shell

我正在开发一个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

1 个答案:

答案 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,请至少阅读quotingSSH quoting