GNU/Linux >> Linux Esercitazione >  >> Linux

Perché bash non si ferma in caso di errore per errori nella sequenza di comandi in cortocircuito?

La logica qui è che il tuo uso di && già è controllo degli errori. Allo stesso modo in cui bash non tratta un errore all'interno di un if condizione che valga la pena di abortire, anche con set -e .

Quando racchiudi i comandi tra parentesi, stai effettivamente eseguendo quei comandi all'interno di una subshell, quindi lo script stesso vede solo il ritorno di quella subshell, cioè:non è a conoscenza che && è coinvolto, quindi si interrompe come previsto.


Cita il manuale di riferimento:

La shell non esce se il comando che fallisce fa parte dell'elenco dei comandi che segue immediatamente una parola chiave while o until, parte del test in un'istruzione if, parte di qualsiasi comando eseguito in un &&o || list tranne il comando che segue il finale &&o ||, qualsiasi comando in una pipeline tranne l'ultimo, o se lo stato di ritorno del comando viene invertito con !


Linux
  1. Comandi Bash bang:un trucco da conoscere per la riga di comando di Linux

  2. Comando yum-config-manager non trovato [fissare]

  3. Comando non trovato in Bash risolto

  4. Perché il file di traduzione Bash non contiene tutti i testi di errore?

  5. Perché il completamento automatico non funziona quando si digita un nome di comando dopo "source"?

Risoluzione dei problemi di errore "Bash:comando non trovato" in Linux

If...else...if Statement (comando non trovato errore)?

Errore Linux:bash:rsync:comando non trovato

bash sh - comando non trovato

Perché 'dd' non funziona per la creazione di USB avviabile?

Perché questo comando ldapadd si chiude con un errore di sintassi non valido?