BASH - одинарная кавычка внутри двойной кавычки для предложения SQL Where
Вопрос
Мне нужно отправить корректно отформатированное предложение сравнения 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