Mejme skript, ktery treba za vas automaticky pravidelne spousti cron a v nem
mate kolonu prikazu
prikaz | prikaz | prikaz > vystup
Pokud vam zalezi na tom, abyste zachytili selhani kterehokoli z prikazu
kolony, neni mozne pouzit obvykly test na $?, protoze v parametru otaznik se
nachazi stav posledniho prikazu kolony. A kdyz je prvnim prikazem treba tar,
byva jeho chybovy stav zajimavejsi nez stav na chvostu.
Muzete za kolonu pridat
PIPE_STATUS="${PIPESTATUS[*]}"
a pozor, tento prikaz musi bezprostredne nasledovat kolonu!
V promenne PIPE_STATUS pak budete treba mit retezec "2 0 0", ktery uz se da
pekne porovnavat s retezcem "0 0 0" a v pripade nerovnosti nejak hlasit.
Nicmene, opet je toto pripad, kdy si timto neprochazime jako prvni na
svete, autori bashe na nas mysleli a tudiz jeste o neco praktictejsi muze byt
na zacatek skriptu proste dat:
# The return value of a pipeline is the status of the last command to exit
# with a non-zero status, or zero if no command exited with a non-zero status
set -o pipefail
a nasledne po kolone testovat obvykle $?
T.
|