繁体   English   中英

[Shell]转义字符

[英][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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM