Portál AbcLinuxu, 3. listopadu 2025 16:41
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.