Portál AbcLinuxu, 14. května 2025 04:06
Ahoj,
mám úsek BASH skriptu, který vypadá zhruba takto:
{ prikaz1 prikaz2 ... prikaz_neni ... prikazX } || echo "Blok XY skončil chybou!"
Pokud se v něm cokoliv nepovede, chci uživateli vypsat chybovou hlášku.
Ale chová se to tak, že i když nějaký příkaz v bloku neexistuje (bash: command prikaz_neni not found), nevyvolá to skončení celého bloku s chybou a to echo neproběhne. Blok vypadá jako by proběhl v pořádku.
Jak dosáhnout popsaného chtěného chování?
Řešení dotazu:
#!/bin/bash ( set -e true false true ) if [ $? -ne 0 ]; then echo "Blok XY skloncil s chybou." fi
BTW: Doporučuji zvážit možnost použít Python.
{ true && true && false && echo 'OK' } || echo "Blok XY skončil chybou!"nebo seznam spustit v podshellu (nebo rovnou v jiném souboru) a využít set -e
( set -e true true false echo 'OK' ) [ $? -ne 0 ] && echo "Blok XY skončil chybou!"
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.