[Shell]逃脱角色

时间:2012-01-20 12:33:39

标签: bash shell unix

我尝试在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''

2 个答案:

答案 0 :(得分:0)

一个简单的解决方案是将要执行的命令放在单独的脚本中:

#!/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"

答案 1 :(得分:0)

我看起来问题不是由shell转义引起的,而是由MySQL SELECT语法引起的。您是否在独立MySQL客户端中查询工作?

相关问题