Não é um especialista em ksh, mas acho que você tem dois problemas em seu código.
Primeiro problema: você precisa colocar aspas simples M$9001
, caso contrário, o shell tentará expandir $9001
.
Segundo problema: você não aninha o [ ]
dentro de [ ]
. Use [[ ]]
ou dois [ ]
.
Você também deve citar $H_OR_T
apenas no caso de se expandir para algo engraçado.
Aqui está o seu código provavelmente corrigido:
if [[ "$H_OR_T" = 'M$9001' || "$H_OR_T" = 'M$9002' ]];
Ou para ser compatível com POSIX e mais portátil:
if [ "$H_OR_T" = 'M$9001' ] || [ "$H_OR_T" = 'M$9002' ];
Observe que existem diferenças sutis entre [ ]
e [[ ]]
. A documentação do ksh é um pouco escassa neste tópico. Este é o melhor que eu encontrei: link questão número 10.
Q10. What is the difference between
[...]
and[[...]]
?A10. The
[[...]]
is processed as part of the shell grammar whereas[...]
is processed like any other command. Operators and operands are detected when the command is read, not after expansions are performed. The shell does not do word splitting or pathname generation inside[[...]]
. This allows patterns to be specified for string matching purposes.