GNU/Linux >> Znalost Linux >  >> Linux

Co dělá `set -x`?

set -x

Vytiskne stopu jednoduchých příkazů pro příkazy, příkazy pro případ, příkazy select a aritmetiku pro příkazy a jejich argumenty nebo přidružené seznamy slov po jejich rozbalení a před jejich provedením. Hodnota proměnné PS4 je rozšířena a výsledná hodnota je vytištěna před příkazem a jeho rozšířenými argumenty.

[zdroj]

Příklad

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

Výše uvedený příklad ilustruje použití set -x . Když je použit, výše uvedený aritmetický výraz byl rozšířen. Mohli jsme vidět, jak byl krok za krokem vyhodnocen jeden řádek.

  • První krok expr byl vyhodnocen.
  • Druhý krok echo byl vyhodnocen.

Chcete-li se dozvědět více o sadě → navštivte tento odkaz

pokud jde o váš shell skript,

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

Váš skript mohl tisknout nějaké další řádky informací, když byl režim spuštění vybrán jako DEBUG . Lidé tradičně povolili režim ladění, když byl skript zavolán s volitelným argumentem, jako je -d


-u:ve výchozím nastavení zakázáno. Při aktivaci se při použití nenakonfigurované proměnné zobrazí chybová zpráva.

-v:ve výchozím nastavení neaktivní. Po aktivaci se před výstupem informace zobrazí původní obsah informací (bez proměnného rozlišení).

-x:ve výchozím nastavení neaktivní. Je-li aktivován, obsah příkazu se zobrazí před spuštěním příkazu (po proměnném rozlišení je zde symbol ++).

Porovnejte následující rozdíly:

/ # 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 umožňuje režim shellu, kde jsou všechny provedené příkazy vytištěny na terminál. Ve vašem případě se jasně používá k ladění, což je typický případ použití pro set -x :tisk každého příkazu při jeho provádění vám může pomoci vizualizovat tok ovládání skriptu, pokud nefunguje podle očekávání.

set +x deaktivuje.


Linux
  1. Co dělá „lc_all=c“?

  2. Co dělá Echo $? Dělat??

  3. Co dělá . ~/.bashrc Příkaz Udělat??

  1. Původ kworker-vlákna

  2. Co znamená set -e ve skriptu bash?

  3. Co dělá zabít -- -0?

  1. Co znamená „–“ (dvojitá pomlčka)?

  2. Co dělá ?

  3. Co dělá 'set -e' a proč by mohlo být považováno za nebezpečné?