Portál AbcLinuxu, 13. května 2025 18:30
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.