Estritamente falando, uma variável não existe se nunca foi atribuído um valor ou se foi unset
. Uma variável com uma string vazia como valor existe .
A expansão de parâmetro padrão ${variable+value}
substituirá a seqüência de caracteres value
quando variable
existir (não está desfeito ou vazio). Isso poderia ser usado para testar a existência assim:
if [ "${OldIP+x}" = "x" ] && [ "$OldIP" != "$StartIP" ]; then
# code
fi
Para testar se OldIP
existe em bash
, use o -v
test:
if [[ -v OldIP ]] && [[ "$OldIP" != "$StartIP" ]]; then
# code
fi
Isso executaria a comparação de string entre $OldIP
e $StartIP
apenas se OldIP
tivesse sido definido anteriormente (mesmo se estivesse definido como uma string vazia). Note que o teste -v
leva o nome da variável.