Почему мой скрипт не работает после отступа? - PullRequest
0 голосов
/ 21 декабря 2018

Мой код не работает после отступа.Перепробовал много вариантов, но не получил удовлетворительного результата.

#!/bin/ksh

typeset -i destCount=1
dbRole="PHYSICAL STANDBY"
RMANPGM=cat
policy="CONFIGURE ARCHIVELOG DELETION POLICY TO NONE;"

if [[ ${destCount} -gt 0 ]] || [[ "${dbRole}" == "PHYSICAL STANDBY" ]]; then
    if [[ "${policy}" == "CONFIGURE ARCHIVELOG DELETION POLICY TO NONE;" ]]; then
        ${RMANPGM}<<-EOF
        run{
        CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;
        }
        exit
        EOF
     fi
else
    echo "Assuming archive deletion policy set as appropriate..."
fi

Попробовал несколько вариантов для "<<-EOF", чтобы удалить вкладки как метод документа здесь, но не повезло.Если я добавлю хэш <<#EOF, то он работает.Однако я не хочу использовать #, поскольку он рассматривается как комментарий в сценарии оболочки.

Есть ли у нас какой-либо другой способ запуска команд после отступов.

Ценю ваши предложения.

Ответы [ 2 ]

0 голосов
/ 23 декабря 2018

А что касается хеша [#], его можно использовать в here-doc согласно «man ksh».

<< [-] word </p>

Ввод оболочки читается до строки, которая совпадает со словом после удаления любой цитаты, или до конца файла.Для слова не выполняется подстановка параметров, подстановка команд, арифметическая подстановка или генерация имени файла.Результирующий документ, называемый здесь-документ, становится стандартным вводом.Если какой-либо символ слова указан в кавычках, то на символы документа не делается никакой интерпретации;в противном случае происходит расширение параметров, подстановка команд и арифметическая подстановка, \ new-line игнорируется и \ необходимо использовать для кавычек символов \, $, `.Если - добавляется к <<, то все ведущие вкладки удаляются из слова и из документа.Если # добавляется к <<, то начальные пробелы и табуляции будут удалены из первой строки документа, а до эквивалентного отступа будут удалены из оставшихся строк и из слова.Предполагается, что табуляция табуляции происходит в каждых 8 столбцах для определения отступов. </p>

Я сравнил и для ksh88, и для ksh93, и похоже на использование «<< #», введенного в ksh93.</p>

поправьте меня, если я неверно истолковал.

0 голосов
/ 22 декабря 2018

При использовании документа с отступом здесь с <<-LABEL единственным отступом, который будет удален из документа и его окончанием LABEL, будут действительные символы табуляции (не пробелы).Если вы сделали отступ с использованием пробелов, у оболочки возникнут проблемы с поиском завершающего LABEL.

...