Условие в if
неверное, оно должно быть:
if [[ -z $complaint ]] || [[ ( $complaint != 'FIRE' && $complaint != 'INTOXICATION' && $complaint != "BRIS" && $complaint != "BOBO" ) ]] ;then
То есть вы хотите войти внутрь этого if
, если $complaint
равно null
(-z $complaint
) или если оно не соответствует ни одному из допустимых параметров, поэтому оно должно отличаться для всех их в то же время, таким образом, &&
вместо ||
.
В качестве альтернативы вы также можете использовать условие по умолчанию в блоке case...esac
:
case $complaint in
FIRE) = $complaint=$(echo "FIRE");;
INTOXICATION) = $complaint=$(echo "INTOXICATION");;
INJURY) = $complaint=$(echo "INJURY");;
BREAKAGE) = $complaint=$(echo "BREAKAGE");;
*) echo "Not a good option"; exit 1;;
esac