Snažím se vytvořit nějaké chybové hlášení pomocí pasti pro volání funkce na všechny chyby:
Trap "_func" ERR
Je možné zjistit, z jaké linky byl signál ERR odeslán? Skořápka je bash.
Pokud to udělám, mohu číst a hlásit, jaký příkaz byl použit, a zaznamenávat/provádět některé akce.
Nebo možná jdu na to úplně špatně?
Testoval jsem s následujícím:
#!/bin/bash
trap "ECHO $LINENO" ERR
echo hello | grep "asdf"
A $LINENO
se vrací 2. Nefunguje.
Přijatá odpověď:
Jak bylo uvedeno v komentářích, vaše citace je špatná. Abyste zabránili $LINENO
, potřebujete jednoduché uvozovky z rozbalení při prvním analyzování linie pasti.
Toto funguje:
#! /bin/bash
err_report() {
echo "Error on line $1"
}
trap 'err_report $LINENO' ERR
echo hello | grep foo # This is line number 9
Spuštění:
$ ./test.sh
Error on line 9
Jak zkontrolovat, jaké signály proces poslouchá?
Linux – Jaké jsou hlavní rozdíly mezi operačními systémy založenými na Bsd a Linux?