2012-01-20 2 views
0

Я пытаюсь выполнить простой запрос SQL в сценарий оболочки, но у меня были проблемы из-за побега символов[Shell] Экранирование символов

Здесь проблема линия

#!/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'' 
+1

Пожалуйста, прикрепите эту ошибку. –

+0

@Tichodrama Спасибо за ваш ответ, опубликовано – ulquiorra

+1

Предполагая, что SQL-запрос правильный, как об этом: '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

простое решение поместить команду, которую необходимо выполнить I п отдельный сценарий:

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

Спасибо за ваш ответ, но я так же вынужден делать все в одном файле. Но я держу ваше решение рядом со мной Спасибо! – ulquiorra

0

Я выглядит проблема не вызвана оболочкой отводящей но MySQL SELECT синтаксиса. Вы запрашиваете работу в автономном клиенте MySQL?

+0

@Tichodrama Да, проблем нет в MySQL-клиенте, и если я пробую только это: 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, он отлично работает: p – ulquiorra

Смежные вопросы