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 ).