Portál AbcLinuxu, 6. listopadu 2025 18:11
for ((;;)) do echo "backup" sleep 3 echo "Konec prvni smycky" for (( y=0; y<=10; y++ )) do echo "$y test samby" echo "zacatek skriptu" sleep 2 echo "Konec druhe smycky" done doneSkript pouštím na pozadí a potřebuji jej ukončit (kill skript) tak, aby skončil na konci prvni smycky nebo na konci druhe smycky. Mělo by to jít pomocí příkazu trap, ale kam ho dát?
Řešení dotazu:
trap sa vzdy dava na zaciatok. Pred kod,ktory chceme takto osetrit, tzn. pred cyklus v tomto pripade.
Takze pre ukoncenie iba na urcitom mieste si treba poznamenat, ze doslo k zaslaniu signalu SIGKILL a potom kontrolovat na miestach, kde ukoncenie povolime. Takze prerusenie cyklu mozeme urobit napr. nasledovne:
function skonci {
prerus="A"
}
trap skonci 15 #15 = SIGKILL
prerus="N"
for (( y=0;;y++ ))
do
echo "$y"
sleep 1
[ "$prerus" == "A" ] && exit 1
done
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.