Я использую переменную оболочки в SQL-выражении, и эта переменная является строковым типом.Если я выполняю приведенный ниже скрипт, я получаю вывод как «не выбрано ни одной строки», но когда я выполняю тот же запрос выбора в приглашении sql, я получаю правильный вывод.Даже я пытался заменить $ var на 'os' в скрипте, но все равно не получил нужный вывод

var="os"
user="system"
pass="2451"
ou=$(sqlplus -s $user/$pass <<EOF
select login,subject from timetable where subject=$var;
exit;
EOF
)
echo $ou

1 ответ1

0

Выполненное утверждение в этом случае будет:

select login,subject from timetable where subject=os;

Он будет сравнивать тему строки с (не существующим / системным) var "os", которого не существует.

Вы должны добавить скобки, в зависимости от используемой вами базы данных, например:

select login,subject from timetable where subject=\'$var\';

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .