Che set -e fa in bash?

Che set -e fa in bash?
Set -e viene utilizzato all'interno della bash per interrompere l'esecuzione immediatamente come esce di query mentre avevano uno stato diverso da zero. Questa funzione viene utilizzata anche quando è necessario conoscere la posizione dell'errore nel codice in esecuzione. Continuiamo l'articolo per approfondire il concetto di "set -e" in diversi aspetti dei codici.

Installa le estensioni di Bash in Linux. Se è già installato, è necessario aggiornare la versione perché la versione deve essere superiore a 4.

Esempio 1

Qui, abbiamo bisogno di un file con il codice bash. Quindi, crea un file utilizzando un comando "touch" utilizzando il terminale Ubuntu. Che è scritto come:

$ touch file1.sh

Avremo due approcci qui. Uno è usare "set -e" al di fuori del corpo della funzione mentre l'altro deve usarlo all'interno della funzione. Considera un file “File1.sh". Abbiamo bisogno del file con un'estensione di .Sh mentre stiamo scrivendo il codice in lingua bash. Questo esempio si occupa dell'aggiunta di una funzione denominata "helo".

In questa funzione, vogliamo stampare una riga in modo che abbiamo appena usato il comando Echo qui per visualizzare il messaggio. Come abbiamo dichiarato una funzione qui, quindi la chiamata della funzione deve essere richiesta qui. Quindi, alla fine, abbiamo usato il nome della funzione come chiamata di funzione. Qui "set -e" viene utilizzato all'inizio mezzi al di fuori del corpo della funzione.

Set -E

Impostare -e si riferisce solo alla scrittura o all'impostazione di un errore che mostra il codice.

Abbiamo usato un semplice editor di testo presente nel sistema Ubuntu per impostazione predefinita.

$ bash file1.sh

Ora, spostandosi verso il secondo approccio in cui dobbiamo usare "set -e" all'interno della funzione. Vedremo la differenza tra questi approcci. Modifica il codice dato sostituendo "set -e" dall'esterno del corpo della funzione all'interno del corpo della funzione "helo", mentre il codice rimanente è lo stesso del precedente. Puoi controllare dall'immagine inserita.

Esegui nuovamente lo stesso comando sul terminale per ottenere il risultato.

Ciò significa che "set -e" non provoca alcun cambiamento quando viene utilizzato all'interno o all'esterno del corpo della funzione.

Esempio 2

Questo è un esempio abbastanza semplice in cui dopo la dichiarazione di estensione bash in un file, abbiamo usato "set -e" nel corpo esterno della funzione. Il "set -e" consente al terminale di lanciare un'eccezione in cui trova l'errore e quindi il codice interrompere l'esecuzione. Quindi, la funzione di errore viene dichiarata qui. L'unico scopo di questa funzione è visualizzare il messaggio di errore insieme al numero di riga che contiene l'errore.

C'è qualcosa di speciale in questo esempio che è l'uso della parola chiave "trap". Questa parola chiave consente l'utilizzo di una funzione integrata ERR che prende il numero di riga di errore e quindi passa alla funzione di errore. A tale scopo di identificazione e visualizzazione degli errori, dobbiamo aggiungere un'istruzione o una variabile che non è inclusa in bash o utilizzare una linea significativa con la modifica dei valori di sintassi.

Trap "Errore $ Linenoe" err

Secondo questo codice, il risultato deve mostrare l'errore alla riga 10.

Eseguire il codice sul terminale utilizzando il file. Puoi riferire che il nome del file viene mostrato con il numero di riga e viene lanciata un'eccezione che mostra che il comando non viene trovato. In secondo luogo, avere un messaggio della funzione per rappresentare il numero di riga in cui si è verificato un errore.

Esempio 3

Questo esempio si occupa dell'utilizzo di due file bash. Uno è file1.sh e l'altro è file2.sh. Considera File2.SH prima. Qui abbiamo usato "set -e" e non è usato nell'altro file. Allo stesso modo, in questo file solo abbiamo usato la chiamata di funzione, mentre l'intero corpo della funzione è dichiarato nell'altro file. Abbiamo collegato entrambi i file utilizzando la parola chiave "origine" in modo che la chiamata di funzione che abbiamo fatto qui sia in grado di eseguire la funzione dall'altro file.

4 Origine “File1.sh"

Successivamente, nella chiamata della funzione, viene anche visualizzata una parola.

Echo "Notifica: $ (helo)"

"Helo" è il nome della funzione.

Ora, considera l'altro file file1.sh. In questo file helo1 () è dichiarata. Nel corpo della funzione, abbiamo visualizzato solo un messaggio.

Echo "Aspetta: $ 1"

Muoversi verso l'altra funzione che è helo (). Questa è la stessa funzione che è stata chiamata con il nome nel primo file di cui abbiamo discusso. All'interno di questa funzione, abbiamo nuovamente utilizzato una funzione di funzione di Helo1 (). Questo è dichiarato sopra la funzione corrente nello stesso file, quindi non è necessario collegare entrambi i file utilizzando la parola chiave "sorgente". Con la chiamata di funzione, viene visualizzato un messaggio:

Helo1 "Esiste un errore"

L'intera prestazione viene eseguita in modo tale da eseguire il file2.sh nel terminale. Quindi, la prima chiamata di funzione verrà eseguita e il controllo si sposterà verso la funzione HELO () in File1.sh. Che eseguirà questa chiamata di funzione e ora il controllo si sposterà verso la prima funzione del file. Vediamo come viene visualizzata l'output.

$ Bash File.sh

Ora puoi vedere che prima la parola viene visualizzata dal file2.sh e poi il messaggio della funzione "helo1 ()" che è "aspettare" e quindi il messaggio di funzione helo (). Dato che abbiamo usato "Exit 1", il controllo non è dato a questo, quindi non c'è più ruolo del "set -e". Se la chiamata di funzione non viene gestita, deve esserci un errore per prevalere.

Esempio 4

Questo esempio contiene una comprensione completa di "set -e". Prendi quattro funzioni in questo esempio. Come sappiamo che il set -e integrato viene utilizzato per uscire dal codice quando ottiene lo stato diverso da zero. In questo esempio, abbiamo usato "0" per una sola funzione che è la prima. Tutte le altre funzioni restituiscono 1. Ciò significa che il codice uscirà dall'esecuzione dopo la visualizzazione della prima funzione. Ma non lo farà. Qui, abbiamo usato "set +e" che è l'opposto di "set -e". Ogni volta che "set -e" ha costretto il codice a terminare l'esecuzione, quello opposto si opporrà ogni volta che incontra il valore diverso da zero. "SET +E" viene dichiarato prima della chiamata della funzione delle prime due funzioni e "set -e" prima della chiamata della funzione degli ultimi due metodi.

SET +E

Ora, verranno eseguite le prime due funzioni. Nella seconda funzione, in quanto è un valore diverso da zero, il compilatore costringerà a lanciare un errore ma "set +e" neutralizzerà il valore. Quando è il momento della terza funzione, entrambi i messaggi verranno visualizzati da Echo ma quando il controllo va al valore "return 1", il codice si fermerà. Come qui, non abbiamo usato "Set +E". Ecco perché la quarta funzione non viene eseguita qui.

Eseguire il codice nel terminale in modo da vedere il valore risultante.

Conclusione

Questo tutorial mostra il funzionamento di "set -e". Negli esempi, è così che viene utilizzato per terminare l'esecuzione. Tuttavia, l'avversario "SET +E" viene anche utilizzato qui per illustrare il funzionamento.