definir opções de variáveis ​​com ponto

definir opções de variáveis ​​com ponto

Estou tentando fazer interface com um sistema não gerenciado por mim que está executando alguns scripts de comando Unix e comandos para executar facilmente um trabalho.

Há uma substituição de variável que não funciona e gostaria de saber se posso escrever um comando para evitar a situação. Existem muitas variáveis ​​para definir e quero ter a chance de inserir uma variável vazia. O problema é que o sistema não está passando uma variável vazia e simplesmente não define a variável. eu recebo

${option.VARIABLE}: substituição incorreta

Tento definir algo assim, mas não está funcionando.

se [ -z ${opção.VARIÁVEL} ]; então opção.VARIABLE=""; fi;

Qualquer ideia?

Responder1

Ponto não é um caractere válido em um nome de variável. O manual do bash diz (aqui)

nome

Uma palavra que consiste apenas em letras, números e sublinhados e começa com uma letra ou sublinhado. Os nomes são usados ​​como variáveis ​​de shell e nomes de funções. Também conhecido como identificador.


No entanto, minha página de manual do ksh93 diz:

Definições.

[...] Um identificador é uma sequência de letras, dígitos ou sublinhados começando com uma letra ou sublinhado. Identificadores são usados ​​como componentes de nomes de variáveis. Um vname é uma sequência de um ou mais identificadores separados por uma extensão . e opcionalmente precedido por .. Vnames são usados ​​como nomes de funções e variáveis.

Esta parte parece mais relevante para o seu problema (ênfase minha):

Expansão de parâmetros.

[...] Uma variável é denotada por um vname. Para criar uma variável cujo vname contém um ., uma variável cujo vname consiste em tudo antes do último . já deve existir.

Este recurso existe apenas no ksh93, não no bash. Se o seu script fizer uso dele, você precisará executá-lo em ksh93.

Responder2

Eu acho que o "." no nome da sua variável atrapalha seu código.

Tente remover esse ponto da sua variável, por exemplo, renomeando-o de option.VARIABLEpara optionVARIABLE.

informação relacionada