Com a sintaxe sh
padrão (portanto, não apenas reconhecida por bash
, mas todas as outras shells compatíveis com POSIX):
case $1 in
(1 | 2) echo OK;;
(*) echo BAD;;
esac
Ou:
if [ "$1" = 1 ] || [ "$1" = 2 ]; then
echo OK
else
echo BAD
fi
(note que é uma comparação byte a byte de strings. 01, 1e0, 1.0, 20/20, 0x1 também seria considerado como BAD, embora numericamente eles possam ser considerados como sendo iguais a 1
) .
Observe que os operadores =
/ !=
na construção bash
[[...]]
(copiados de ksh
) são na verdade operadores de correspondência de padrões, em oposição aos operadores de igualdade, portanto, neste caso especial em que você deseja Para corresponder a um único caractere, você também pode usar [[ $1 != [12] ]]
como você poderia fazer case $1 in ([12])
na sintaxe sh
padrão.