Para variáveis escalares, na sintaxe padrão (POSIX) sh
:
if [ "${var+set}" != set ]; then
echo var is not set
fi
Ou mais extravagante, embora menos legíveis, como
if [ -z "${var++}" ]; then
echo var is unset
fi
Ou:
if ${var+false}; then
echo var is unset
fi
Para variáveis de matriz (não que as matrizes sejam portáteis ), em zsh
ou yash
, que retornariam não definidas, a menos que a matriz recebesse uma lista incluindo a lista vazia, enquanto em bash ou ksh que retornaria unset a menos que o elemento do índice 0 estivesse definido. O mesmo para matrizes associativas (para a chave "0").
Observe que, exceto em zsh
(quando não em sh
emulation), export var
ou readonly var
declara a variável, mas não fornece nenhum valor, portanto, shells que não sejam zsh
reportará var
como unset
lá (a menos que var
tenha recebido um valor antes da chamada para export
/ readonly
).