Variável não existe se não estiver definida. Por exemplo,
unset var
echo ${var?"this is not set"}
-bash: var: this is not set
O shell exibe uma mensagem de erro se var
não estiver definido. O echo
não é executado. (Verifique na man page bash as formas de verificar e atribuir valores a uma variável que existe, mas pode ou não ter um valor, ou um que não exista.)
O caso mais comum é geralmente a substituição sem erro, e seria tratado assim:
unset var
echo ${var:-This is a new value}
This is a new value
A variável existe e tem um valor. Por exemplo,
var=123
echo ${var?"this is not set"}
123
A variável existe, mas está vazia ( ""
)
var=
echo ${var?"this is not set"}
O eco gera o valor de var
, que não é nada, seguido por sua nova linha usual
Atribuir um valor é assim:
var=123
echo $var
123
declare é usado para atribuir atributos a uma variável (verifique a página man bash para typeset
ou declare
sob **shell builtin commands**
para detalhes.