Portál AbcLinuxu, 9. května 2025 03:17
#!/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 donea 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.