GNU/Linux >> Linux Esercitazione >  >> Linux

Cosa fa `set -x`?

set -x

Stampa una traccia di comandi semplici, per comandi, comandi case, comandi select e aritmetica per comandi e relativi argomenti o elenchi di parole associate dopo che sono stati espansi e prima che vengano eseguiti. Il valore della variabile PS4 viene espanso e il valore risultante viene stampato prima del comando e dei suoi argomenti espansi.

[fonte]

Esempio

set -x
echo `expr 10 + 20 `
+ expr 10 + 20
+ echo 30
30
set +x
echo `expr 10 + 20 `
30

L'esempio sopra illustra l'uso di set -x . Quando viene utilizzato, l'espressione aritmetica sopra è stata espansa. Abbiamo potuto vedere come una singola riga è stata valutata passo dopo passo.

  • Primo passaggio expr è stato valutato.
  • Secondo passaggio echo è stato valutato.

Per saperne di più su set → visita questo link

quando si tratta del tuo script di shell,

[ "$DEBUG" == 'true' ] && set -x

Il tuo script potrebbe aver stampato alcune righe aggiuntive di informazioni quando la modalità di esecuzione è stata selezionata come DEBUG . Tradizionalmente le persone erano solite abilitare la modalità di debug quando uno script veniva chiamato con argomenti facoltativi come -d


-u:disabilitato per impostazione predefinita. Quando attivato, viene visualizzato un messaggio di errore quando si utilizza una variabile non configurata.

-v:inattivo per impostazione predefinita. Dopo l'attivazione, il contenuto originale delle informazioni verrà visualizzato (senza risoluzione variabile) prima che le informazioni vengano emesse.

-x:inattivo per impostazione predefinita. Se attivato, il contenuto del comando verrà visualizzato prima che il comando venga eseguito (dopo la risoluzione variabile, c'è un simbolo ++).

Confronta le seguenti differenze:

/ # set -v && echo $HOME
/root
/ # set +v && echo $HOME
set +v && echo $HOME
/root

/ # set -x && echo $HOME
+ echo /root
/root
/ # set +x && echo $HOME
+ set +x
/root

/ # set -u && echo $NOSET
/bin/sh: NOSET: parameter not set
/ # set +u && echo $NOSET

set -x abilita una modalità della shell in cui tutti i comandi eseguiti vengono stampati sul terminale. Nel tuo caso è chiaramente usato per il debug, che è un tipico caso d'uso per set -x :la stampa di ogni comando mentre viene eseguito può aiutarti a visualizzare il flusso di controllo dello script se non funziona come previsto.

set +x lo disabilita.


Linux
  1. Cosa significa "-" (doppio trattino)?

  2. Cosa fa Exec 3?

  3. Cosa restituisce malloc(0)?

  4. Cosa significa 'cd-'?

  5. Cosa fa 'bash -c'?

Origine di un thread kworker

Cosa significa set -e in uno script bash?

Cosa fa % nelle stringhe della shell di Linux?

Qualcuno può spiegare in dettaglio cosa fa set -m?

Cosa fa kill -- -0?

Cosa significa echo $? fare?