У меня есть файл для выполнения в Ksh, написанный кем-то. Он имеет набор команд для выполнения в sqlplus.Запуск pl/sql в Korn Shell (AIX)
Он начинается с того,
sqlplus -s $UP <<- END
с последующим набором DDL команд, таких как создание, падение и т.д..,
Когда я исполняю файл в оболочке, я получаю сообщение об ошибке в стартовая строка, приведенная выше. Я понимаю, что «-s» запускает sqlplus в бесшумном режиме, а $ UP - это строка соединения с именем пользователя/паролем. Но я не мог сделать головы или хвосты «< < - END» (многие сайты из google говорят, что перенаправление ввода «< <« не »< < -»). Поэтому я предположил, что ошибка должна быть в этой части и удалить ее из файла. Теперь он читает,
sqlplus -s $UP
Но когда я исполняю файл, он ожидает ввода от оболочки, а не читать остальную часть строки из файла. Как сделать sqlplus для выполнения команд ddl в остальной части файла ?. Заранее спасибо.
Где проблема? Работает ли исходный скрипт или нет? << - (а также <<<) - это полное юридическое перенаправление под названием «Here Document», а это означает, что все следующие строки должны быть поданы в качестве стандартного ввода команды, пока разделитель (в вашем случае, END) . Посмотрите на man-страницу ksh для более подробного объяснения. – Juraj
@Juraj. Это отчасти работало частично. Он жаловался, что не знал, что означает «КОНЕЦ». – learner135
Дефис в '<< -' позволяет отступать от блока с помощью ведущих вкладок для удобства чтения. Вкладки будут удалены, чтобы они не влияли на содержимое блока. Без дефиса ведущие вкладки могут быть значительными в зависимости от контекста. –