establecer opciones variables con punto

establecer opciones variables con punto

Estoy intentando interactuar con un sistema no administrado por mí que está ejecutando algunos scripts de comandos Unix y comandos para ejecutar fácilmente un trabajo.

Hay una sustitución de variables que no funciona y me pregunto si puedo escribir un comando para evitar la situación. Hay muchas variables para configurar y quiero tener la oportunidad de ingresar una variable vacía. El problema es que el sistema no pasa una variable vacía y simplemente no establece la variable. yo obtengo

${option.VARIABLE}: mala sustitución

Intento configurar algo así pero no funciona.

si [ -z ${opción.VARIABLE} ]; luego opción.VARIABLE=""; fi;

¿Alguna idea?

Respuesta1

El punto no es un carácter válido en un nombre de variable. El manual de bash dice (aquí)

nombre

Palabra que consta únicamente de letras, números y guiones bajos, y que comienza con una letra o un guión bajo. Los nombres se utilizan como nombres de funciones y variables de shell. También conocido como identificador.


Sin embargo, mi página de manual ksh93 dice:

Definiciones.

[...] Un identificador es una secuencia de letras, dígitos o guiones bajos que comienzan con una letra o un guión bajo. Los identificadores se utilizan como componentes de los nombres de variables. Un vname es una secuencia de uno o más identificadores separados por un archivo . y opcionalmente precedido por .. Los nombres V se utilizan como nombres de funciones y variables.

Esta parte parece más relevante para su problema (el énfasis es mío):

Expansión de parámetros.

[...] Una variable se indica con un nombrev. Para crear una variable cuyo nombrev contenga un ., una variable cuyo nombrev contenga todo lo anterior al último . ya debe existir.

Esta característica existe sólo en ksh93, no en bash. Si su script lo utiliza, debe ejecutarlo en ksh93.

Respuesta2

Creo que el "." en su nombre de variable estropea su código.

Intente eliminar ese punto en su variable, por ejemplo, cambiándole el nombre de option.VARIABLEa optionVARIABLE.

información relacionada