Che cosa fa set -e?

24

Ho uno script che ho trovato e sto cercando di farlo funzionare, scarica e installa solo le librerie di runtime di Apache. La prima riga è set -e e sta causando un errore; cosa fa set -e ?

    
posta spitfiredd 18.09.2013 - 03:20

2 risposte

20
  

Questo builtin è così complicato che merita la sua sezione.

     

Set   ti permette di cambiare i valori delle opzioni della shell e impostare il   parametri posizionali, o per visualizzare i nomi e i valori della shell   variabili.

L'opzione -e

  

-e

     

Esci immediatamente se una pipeline (vedi Pipelines), che può essere costituita da a   singolo comando semplice (vedi Comandi semplici), un comando di sottotitolazione   racchiuso tra parentesi (vedi Raggruppamento dei comandi) o uno dei comandi   eseguito come parte di un elenco di comandi racchiuso tra parentesi graffe (consultare Comando   Raggruppamento) restituisce uno stato diverso da zero. La shell non esce se il   il comando che fallisce fa parte dell'elenco dei comandi immediatamente successivo a   while o until keyword, parte del test in una dichiarazione if, parte di   qualsiasi comando eseguito in un & amp; & amp; o || elenco tranne il comando seguente   il finale & amp; & amp; o ||, qualsiasi comando in una pipeline ma l'ultimo, o se il   lo stato di ritorno del comando viene invertito con!. Una trappola su ERR, se   set, viene eseguito prima che la shell esca.

     

Questa opzione si applica all'ambiente shell e ad ogni subshell   ambiente separatamente (vedi Ambiente di esecuzione dei comandi) e maggio   causare subshells per uscire prima di eseguire tutti i comandi nel   subshell.

Fonte: www.gnu.org

Modificato a causa del commento di @ psusi di seguito.

Inoltre puoi leggere la pagina di manuale di bash

man bash 

nella sezione: COMANDI INCORPORATI DELLA SHELL

o problema

help set 

per un breve messaggio di aiuto.

    
risposta data Nick Thom 18.09.2013 - 03:42
11

set -e in breve, quando è nella parte superiore del tuo script di bash, dice allo script di uscire non appena una riga nello script fallisce (con alcune eccezioni elencate nel manuale). [1]

Come opzione di debug, è spesso usato con set -x , che è quello di stampare ogni riga di comando espansa prima dell'esecuzione con un segno "+". [2]

Vedi di più su:

[1] link

[2] link

    
risposta data Devy 07.07.2016 - 21:35

Leggi altre domande sui tag