Existe um teste portátil para saber se uma variável (cujo nome é conhecido estaticamente em um script) não está definida (que é diferente de vazia)?
Existe um teste portátil para saber se uma variável (cujo nome é conhecido estaticamente em um script) não está definida (que é diferente de vazia)?
Para variáveis escalares, na
sh
sintaxe padrão (POSIX):Ou coisas mais extravagantes, embora menos legíveis, como
Ou:
Para variáveis de array (não que arrays sejam portáveis ), in
zsh
oryash
, que retornaria unset a menos que o array seja atribuído a qualquer lista incluindo a lista vazia, enquanto em bash ou ksh que retornaria unset a menos que o elemento de índice 0 seja definido. O mesmo para matrizes associativas (para a chave "0").Observe que, exceto em
zsh
(quando não emsh
emulação),export var
oureadonly var
declara a variável, mas não fornece nenhum valor, portanto, shells que nãozsh
sejam reportadosvar
comounset
lá (a menos quevar
tenha sido atribuído um valor antes da chamada paraexport
/readonly
).POSIX define várias expansões de parâmetros para testar se um parâmetro não está definido.
A seguinte expansão de parâmetro pode ser usada para testar se um parâmetro não está definido. A segunda parte (após o ponto de interrogação) pode ser especificada para indicar que o parâmetro
var
não está definido.Observe que pode ser um erro de programação usar um parâmetro indefinido.
set
especial embutido na especificação POSIX .