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.