Bash I comandi non riusciti non fermano l'esecuzione dello script


Esempio

Nella maggior parte dei linguaggi di scripting, se una chiamata di funzione fallisce, può generare un'eccezione e interrompere l'esecuzione del programma. I comandi di Bash non hanno eccezioni, ma hanno codici di uscita. Un codice di uscita diverso da zero segnala un errore, tuttavia un codice di uscita diverso da zero non arresta l'esecuzione del programma.

Questo può portare a situazioni pericolose (anche se certamente inventate) in questo modo:

#!/bin/bash
cd ~/non/existent/directory
rm -rf *

Se cd -ing su questa directory fallisce, Bash ignorerà l'errore e passerà al comando successivo, cancellando la directory da cui è stato eseguito lo script.

Il modo migliore per risolvere questo problema è utilizzare il comando set :

#!/bin/bash
set -e
cd ~/non/existent/directory
rm -rf *

set -e dice a Bash di uscire immediatamente dallo script se qualsiasi comando restituisce uno stato diverso da zero.