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.