我尝试在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''
答案 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客户端中查询工作?