задать переменные параметры с точкой

задать переменные параметры с точкой

Я пытаюсь взаимодействовать с системой, которой я не управляю, и которая выполняет некоторые командные скрипты Unix и команды для легкого выполнения задания.

Есть подстановка переменной, которая не работает, и мне интересно, могу ли я написать команду, чтобы избежать этой ситуации. Нужно установить много переменных, и я хочу иметь возможность ввести пустую переменную. Проблема в том, что система не передает пустую переменную и просто не устанавливает переменную. Я получаю

${option.VARIABLE}: плохая замена

Я пытаюсь установить что-то подобное, но ничего не получается.

если [ -z ${option.VARIABLE} ]; тогда option.VARIABLE=""; fi;

Есть идеи?

решение1

Точка не является допустимым символом в имени переменной. В руководстве по bash говорится (здесь)

имя

Слово, состоящее исключительно из букв, цифр и подчеркиваний и начинающееся с буквы или подчеркивания. Имена используются как имена переменных оболочки и функций. Также называется идентификатором.


Однако на моей странице руководства ksh93 написано:

Определения.

[...] Идентификатор — это последовательность букв, цифр или символов подчеркивания, начинающаяся с буквы или символа подчеркивания. Идентификаторы используются как компоненты имен переменных. Vname — это последовательность одного или нескольких идентификаторов, разделенных точкой . и, возможно, предваряемых точкой .. Vname используются как имена функций и переменных.

Эта часть кажется наиболее актуальной для вашего вопроса (выделено мной):

Расширение параметров.

[...] Переменная обозначается vname. Чтобы создать переменную, vname которой содержит ., переменная, vname которой состоит из всего, что находится до последней ., уже должна существовать.

Эта функция существует только в ksh93, в bash ее нет. Если ваш скрипт ее использует, вам нужно запустить его под ksh93.

решение2

Я думаю, что «.» в имени переменной портит ваш код.

Попробуйте удалить эту точку в вашей переменной, например, переименовав ее из option.VARIABLEв optionVARIABLE.

Связанный контент