GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué bash no se detiene por error debido a fallas en la secuencia de comandos en cortocircuito?

La lógica aquí es que su uso de && ya es comprobación de errores. De la misma manera que bash no trata una falla dentro de un if condición que vale la pena abortar, incluso con set -e .

Cuando envuelve los comandos entre paréntesis, en realidad está ejecutando esos comandos dentro de una subcapa, por lo que el script en sí solo ve el retorno de esa subcapa, es decir, no sabe que && está involucrado en absoluto, por lo que aborta como esperabas.


Cita el manual de referencia:

El shell no sale si el comando que falla es parte de la lista de comandos inmediatamente después de una palabra clave while o till, parte de la prueba en una declaración if, parte de cualquier comando ejecutado en un &&o || list excepto el comando que sigue al &&final o ||, cualquier comando en una canalización excepto el último, o si el estado de retorno del comando se invierte con !


Linux
  1. Comandos Bash Bang:un truco imprescindible para la línea de comandos de Linux

  2. Comando yum-config-manager no encontrado [Fijar]

  3. Comando no encontrado en Bash arreglado

  4. ¿Por qué la sustitución del proceso Bash no funciona con algunos comandos?

  5. ¿Por qué Bash no almacena comandos que comienzan con espacios?

Solución de problemas del error "Bash:Comando no encontrado" en Linux

c_rehash:Error de comando no encontrado – Solución

If…else…if Declaración (error de comando no encontrado)?

Bash:¿Por qué la secuencia de comandos principal no termina en SIGINT cuando la secuencia de comandos secundaria atrapa a SIGINT?

¿Por qué 'dd' no funciona para crear un USB de arranque?

¿Por qué este comando ldapadd se cierra con un error de sintaxis no válida?