¿Qué sucede cuando un script encuentra un error en uno de los comandos?

¿Qué sucede cuando un script encuentra un error en uno de los comandos?

Usé alien para convertir un RPM a .deb. NO utilicé la conversión de script de alienígena; Estoy convirtiendo a mano. De hecho, el script vomitó sobre alguna sintaxis no compatible. Mi pregunta NO es sobre cómo solucionar esta incompatibilidad, sino sobre cómo el script continúa ejecutándose exitosamente, a pesar de encontrar un error.

Aquí está la sección problemática:

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

Esto provoca el siguiente "error":

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

A pesar de esto, el script continúa ejecutándose perfectamente. Entonces, ¿qué está pasando aquí?

Respuesta1

[no es un "incorporado especial", y segúnPOSIXa de un shell no interactivo ("script") Utility syntax error (option or operand error)integrado no especial .Shall not exit

Tanto en cuanto a por qué el shell no sale. El script funciona perfectamente porque ECHO_ESCestá configurado en algo sensato sin importar cómo se iframifique.

A diferencia del mensaje de error que sugiere, el error no proviene de \cpero ==cuyo uso no es válido [(la igualdad de cadenas se prueba con un solo =), pero los shells que admiten [[(que admiten ==) parecen permitir ==incluso la notación entre corchetes únicos (por ejemplo bash, ksh). Tenga en cuenta que el código anterior nonoerror en bash, por lo que es posible que desee considerar volver a etiquetar su pregunta.

información relacionada