Как передать параметр в sql-запрос в shell-скрипте?

Модератор: Модераторы разделов

Аватара пользователя
skeletor
Сообщения: 1224

Как передать параметр в sql-запрос в shell-скрипте?

Сообщение skeletor »

Есть запрос :

Код: Выделить всё

select * from TABLE_NAME where FIELD_NAME like '%pattern%'
[code]
который я хочу запихнуть в скрипт. И главная проблема в том, что не могу передать параметр pattern в скрипт. То есть, содержимое скрипта
[code]
#!/bin/sh
mysql DB_NAME -u root -pPASSWORD -e "select * from TABLE_NAME where FIELD_NAME like '%$1%'"
[code]
Запускаю скрипт так
[code]
./mscript user

Но, запрос выполняется с ошибками из-за того, что нельзя передать параметр $1 в запрос mysql. Одинарные кавычки этому препятствуют. Подскажите, как можно передать параметр ну или какие-нибудь идеи. Уже пробовал экранировать одинарные кавычки, но то ошибка вылазит, то пустой ответ выдаёт на запрос.
Если делать честно, а именно : зайти в mysql и там выполнить нужный запрос, то всё ок.
Спасибо сказали:
Аватара пользователя
0ut
Сообщения: 307
Статус: Злыдень
ОС: *nix

Re: Как передать параметр в sql-запрос в shell-скрипте?

Сообщение 0ut »

в скрипте

Код: Выделить всё

per = $1
mysql DB_NAME -u root -pPASSWORD -e "select * from TABLE_NAME where FIELD_NAME like $per"


возможно будет работать, а возможно и нет, не проверяд
Запросы ошибок к операционной системе игнорироваться не могут.
Спасибо сказали:
Аватара пользователя
skeletor
Сообщения: 1224

Re: Как передать параметр в sql-запрос в shell-скрипте?

Сообщение skeletor »

Подсказали на одном форуме : забыл в конце запроса select поставить точку с запятой.
Правильный вариант вот

Код: Выделить всё

#!/bin/sh
mysql DB_NAME -u root -pPASSWORD -e "select * from TABLE_NAME where FIELD_NAME like '%$1%';"
Спасибо сказали:
Serik
Сообщения: 149
ОС: SuSE Linux

Re: Как передать параметр в sql-запрос в shell-скрипте?

Сообщение Serik »

имхо
/bin/sh
заменить на
/bin/perl -w
Спасибо сказали: