[英][Shell]Escaping of characters
我尝试在shell脚本中执行简单的SQL查询,但是由于字符转义而遇到麻烦
这是问题线
#!/bin/sh
su -l mysql -c 'mysql -h XXX.XXX.XX.XXX -uuser -padmin -D testBD -e "SELECT CASE MODE WHEN 0 THEN \'choix1\' WHEN 1 THEN \'choix2\' WHEN 2 THEN \'choix3\' END , count( * ) FROM city GROUP BY name" > /kbd/testSelect'
我已经测试过了,但是遇到了转义字符的错误,我不知道该怎么解决非常感谢
line 4: syntax error near unexpected token `('
/kbd/test.sh: line 4: ` su -l mysql -c 'mysql -h XXX.XXX.XX.XXX -uuser -padmin -D testBD -e "SELECT CASE MODE WHEN 0 THEN \'choix1\' WHEN 1 THEN \'choix2\' WHEN 2 THEN \'choix3\' END , count( * ) FROM city GROUP BY name" > /kbd/testSelect''
一个简单的解决方案是将要执行的命令放在单独的脚本中:
#!/bin/sh
mysql -h XXX.XXX.XX.XXX -uuser -padmin -D testBD -e "SELECT CASE MODE WHEN 0 THEN 'choix1' WHEN 1 THEN 'choix2' WHEN 2 THEN 'choix3' END , count( * ) FROM city GROUP BY name" > /kbd/testSelect
然后从原始脚本中调用该脚本:
#!/bin/sh
su -l mysql -c "/path/to/my_new_script.sh"
我看起来问题不是由外壳转义引起的,而是由MySQL SELECT
语法引起的。 您是否在独立的MySQL客户端中查询工作?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.