Com a sintaxe [ expression ]
(POSIX Standard), você pode usar o seguinte:
if [ "$name" != "$blank" ] && [ "$age" = "$blank" ]; then
echo true
fi
Mas na sintaxe [[ expression ]]
você pode usar as duas condições:
if [[ $name != "$blank" && $age == "$blank" ]]; then
echo true!
fi
Duas vantagens de [[
sobre [
:
- Nenhuma divisão de palavras ou expansão glob será feita para
[[
e, portanto, muitos argumentos não precisam ser citados (com a exceção do lado direito de==
e!=
, que é interpretado como um padrão se não for citado). -
[[
mais fácil de usar e menos propenso a erros.
Desvantagem de [[
: só é suportado em ksh, bash e zsh, não na planície Bourne / POSIX sh.
Minha referência e boa página para comparar [[
e [
: FAQ da bash
Implicações de segurança de esquecendo-se de citar uma variável em shells bash / POSIX