Неверный идентификатор при передаче результата SQL в массив в скрипте оболочки - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь сохранить результат SQL-запроса в массиве в сценарии оболочки, но при запуске .sh

я сталкиваюсь с ошибкой неверного идентификатора.

Не могли бы вы проверить, что важно в моем коде?

#!/usr/bin/ksh

echo Start Executing SQL commands

array=$(sqlplus -s apps/apps << eof
SET PAGESIZE 0;
SELECT directory_name from all_directories where directory_name like '%XXBP%';
eof)


printf '%s\n' "${array[@]}"

Это ошибка, которую я получаю:

Screenshot of the error i get

Я знаю, что проблема связана с моим оператором%, но мне нужно, чтобы он ограничил результат моего запроса.

1 Ответ

0 голосов
/ 07 ноября 2018

Это звучит как это очень специфическая ошибка ksh , где здесь-документы молча преобразуют одинарные кавычки в двойные кавычки. Вы можете попробовать обходной путь в этом ответе, например,

#!/usr/bin/ksh

echo Start Executing SQL commands

# put the single-quotes in a variable to prevent the here-document from converting them to double
STR="'%XXBP%'"

array=$(sqlplus -s apps/apps << eof
SET PAGESIZE 0;
SELECT directory_name from all_directories where directory_name like $STR;
eof)

printf '%s\n' "${array[@]}"
...