Portál AbcLinuxu, 27. listopadu 2025 11:27
#!/bin/bash
RELOAD_NAMED="1"
while true; do
find bla bla | while read neco; do
[ "$?" -eq 0 ] && RELOAD_NAMED="0"
echo ${RELOAD_NAMED}
done
if [ "${RELOAD_NAMED}" -eq 0 ]; then
#rndc reload
echo "Probehl reload DNS serveru"
fi
done
a ted babo rad proc pokud vyhovi podminka [ "$?" -eq 0 ] nepriradi do promenne RELOAD_NAMED hodnotu 0
a ted babo rad proc pokud vyhovi podminka [ "$?" -eq 0 ] nepriradi do promenne RELOAD_NAMED hodnotu 0Přiřadí, ale příkaz běží v subshellu (spouští se
find | while read ...), takže se nemůže propagovat do rodičovského procesu.
a jak se to da udelat ? nastavit jako env ?
Ten script na jeden radek psat nejde. protoze je dooost dlouhy.Chtěl jsem tím naznačit, že ten cyklus je tam možná úplně zbytečný a že by to mohlo jít bez něho. A že by se to možná dalo napsat i bez té proměnné, kterou se snažíš měnit.
while read neco; do
[ "$?" -eq 0 ] && RELOAD_NAMED="0"
echo ${RELOAD_NAMED}
done < <(find bla bla)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.