BASH - одинарная кавычка внутри двойной кавычки для предложения SQL Where

StackOverflow https://stackoverflow.com/questions/1411663

Вопрос

Мне нужно отправить корректно отформатированное предложение сравнения WHERE даты программе в командной строке в bash.

Как только он попадет внутрь вызываемой программы, предложение WHERE должно быть допустимо для Oracle и должно выглядеть точно так:

highwater>TO_DATE('11-Sep-2009', 'DD-MON-YYYY')

Значение даты находится в переменной. Я пробовал различные комбинации цитат и обратной косой черты. Вместо того, чтобы запутать проблему и привести примеры моих ошибок, я надеюсь на неточный точный ответ, не запятнанный dreck.

Если бы я написал это на Perl, задание я бы выглядело так:

$hiwaterval = '11-Sep-2009';
$where = "highwater>TO_DATE(\'$hiwaterval\', \'DD-MON-YYYY\')";

Как мне добиться того же эффекта в bash?

Это было полезно?

Решение

hiwaterval='11-Sep-2009'

where="highwater > TO_DATE('$hiwaterval', 'DD-MON-YYYY')"

при необходимости добавьте " экспорт " перед окончательной установкой переменной, если она должна быть видимой с нашей стороны текущей оболочки.

Другие советы

Вы пробовали использовать двойные галочки? Как highwater > TO_DATE ('' 11-Sep-2009 '', '' DD-MON-YYYY ''). Просто предложение. Я не пробовал это.

Вы можете назначить предложение where следующим образом:

export WHERECLAUSE=`echo "where highwater >TO_DATE('11-Sep-2009', 'DD-MON-YYYY')"`

(с обратными галочками вокруг выражения echo - они не отображаются в моем редакторе здесь ...)

который работает со сценарием оболочки в форме:

sqlplus /nolog <<EOS
connect $USERNAME/$PASSWD@$DB
select * from test $WHERECLAUSE
;
exit
EOS
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top