O que acontece quando um script encontra um erro em um dos comandos?

O que acontece quando um script encontra um erro em um dos comandos?

Usei o alien para converter um RPM em .deb. NÃO usei a conversão de script do alien; Estou convertendo manualmente. Na verdade, o script vomitou em alguma sintaxe não compatível. Minha pergunta NÃO é sobre como corrigir essa incompatibilidade, mas sim sobre como o script continua a ser executado com êxito, apesar de encontrar um erro.

Aqui está a seção problemática:

if [ "`/bin/echo '\c'`" == "" ]; then
   ECHO_ESC="/bin/echo"
else
   ECHO_ESC="/bin/echo -e"
fi

Isso causa o seguinte "erro":

./avsetup_mcc: 11: [: \c: unexpected operator

Apesar disso, o script continua funcionando perfeitamente. Então, o que está acontecendo aqui?

Responder1

[não é um "integrado especial" e, de acordo comPOSIXa Utility syntax error (option or operand error)de um shell não especial integrado em Shall not exitum shell não interativo ("script").

Tanto quanto por que o shell não sai. O script funciona perfeitamente porque ECHO_ESCestá definido para algo sensato, não importa como as iframificações.

Ao contrário do que a mensagem de erro sugere, o erro não vem do, \cmas do ==which é inválido para uso [(a igualdade de string é testada com um único =), mas os shells que suportam [[(que suportam ==) parecem permitir ==até mesmo a notação de colchete único (por exemplo bash, ksh). Observe que o código acima faznãoerro no bash, então você pode considerar remarcar sua pergunta.

informação relacionada