[
não é um "especial interno" e, de acordo com POSIX Utility syntax error (option or operand error)
de um% não especial especialShall not exit
de um shell não interativo ("script").
Tanto quanto por que o shell não sai. O script funciona perfeitamente porque ECHO_ESC
está definido como algo sensato, não importa como as ramificações if
.
Diferentemente da mensagem de erro sugerida, o erro não vem do \c
, mas do ==
, que é inválido para usar com [
(a igualdade da cadeia é testada com um único =
), mas shells compatíveis [[
(que suporta ==
) parece permitir ==
mesmo para a notação de colchetes simples (por exemplo, bash
, ksh
). Note que o código acima não não erro sob bash, então você pode querer considerar repetir sua pergunta.