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