Mám nějaké problémy s některými skripty v bash, s chybami a neočekávaným chováním. Chtěl bych prozkoumat příčiny problémů, abych mohl použít opravy. Existuje způsob, jak přepnout nějaký druh „ladícího režimu“ pro bash, abych získal další informace?
Přijatá odpověď:
Spusťte bash skript pomocí bash -x ./script.sh
nebo přidejte do skriptu set -x
zobrazíte výstup ladění.
Další pomocí bash
4.1 nebo novější:
Pokud chcete zapsat výstup ladění do samostatného souboru, přidejte do skriptu toto:
exec 5> debug_output.txt
BASH_XTRACEFD="5"
Viz:https://stackoverflow.com/a/25593226/3776858
Pokud chcete vidět čísla řádků, přidejte toto:
PS4='$LINENO: '
Pokud máte přístup k logger
příkaz, pak jej můžete použít k zápisu výstupu ladění přes váš syslog s časovým razítkem, názvem skriptu a číslem řádku:
#!/bin/bash
exec 5> >(logger -t $0)
BASH_XTRACEFD="5"
PS4='$LINENO: '
set -x
# Place your code here
Můžete použít volbu -p
z logger
příkaz pro nastavení individuálního zařízení a úrovně pro zápis výstupu přes místní syslog do jeho vlastního logfilu.