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.