Portál AbcLinuxu, 13. května 2025 23:11
dcopRef=`kdialog --progressbar "Press Cancel at Any time" 4` dcop $dcopRef showCancelButton true # Testovací smyčka while true; do sleep 1 [ `dcop $dcopRef wasCancelled` == "true" ] && echo konec done # Hlavní funkce dcop $dcopRef setProgress 1 dcop $dcopRef setLabel "Thinking really hard" sleep 50 dcop $dcopRef setProgress 2 sleep 50 dcop $dcopRef setLabel "Thinking some more" dcop $dcopRef setProgress 3 sleep 50 dcop $dcopRef setProgress 4 sleep 50 dcop $dcopRef close exitHlavní funkce by měla normálně probíhat, ta smyčka by jen měla hlídat stisk ukončovacího tlačítka a zavolat vypínací funkci. Teď se pochopitelně rozjede jen ta smyčka. Lze nějak učinit, aby běžely současně testovací smyčka i hlavní program?
prikaz1 & { prikaz2 prikaz3 } & prikaz4Příkaz1 a příkaz2,3 budou bězět na pozadí při současném běhu skriptu (prikazu4 atd.).
break
.
function k_dcop() { echo konec dc_1=0 dcop $dcopRef close } dcopRef=`kdialog --progressbar "Press Cancel at Any time" 4` dcop $dcopRef showCancelButton true dc_1=1 until [ $dc_1 -eq 0 ]; do sleep 1 [ `dcop $dcopRef wasCancelled` == true ] && k_dcop done & dcop $dcopRef setProgress 1 dcop $dcopRef setLabel "Thinking really hard" sleep 5 dcop $dcopRef setProgress 2 sleep 5 dcop $dcopRef setLabel "Thinking some more" dcop $dcopRef setProgress 3 sleep 5 dcop $dcopRef setProgress 4 sleep 5 dcop $dcopRef close exitKdyž stisknu ukončovací tlačítko v progressbaru, toto zmizí, ale script dál běží až do konce (což je nepřijatelné, půjde o mencoder, a to jsou hodiny).
mircy@linux:/data/video-avi> sh e.sh konec object not accessible object not accessible object not accessible call failed mircy@linux:/data/video-avi>A když ho nestisknu,tak po doběhnutí skriptu donekonečna:
e.sh: line 19: [: ==: unary operator expected call failed e.sh: line 19: [: ==: unary operator expected call failed e.sh: line 19: [: ==: unary operator expected call failed e.sh: line 19: [: ==: unary operator expected call failedOmluvte mé pomalé psaní, jsem postižený.
dc_1=1 until [ $dc_1 -eq 0 ]; do sleep 1 [ `dcop $dcopRef wasCancelled` == true ] && k_dcop done &tak tu část zkus upravit takhle :
dc_1=1 { until [ $dc_1 -eq 0 ]; do sleep 1 [ `dcop $dcopRef wasCancelled` == true ] && k_dcop done exit } & ... atd.a nebo takhle :
dc_1=1 until [ $dc_1 -eq 0 ]; do sleep 1 [ `dcop $dcopRef wasCancelled` == true ] && k_dcop done & [ "$dc_1" = "1" ] || exit ... atd.Pokud mysllíš něco jiného, napiš a já, nebo někdo jiný se více zamyslí ...
function k_dcop() { echo konec dc_1=0 dcop $dcopRef close exit }
exit
je na konci funkce. Tam asi nemá žádný význam, stejně tam funkce končí. Zkus ho dát, jak jsem psal tady, jestli je to co předpokládám, že potřebuješ.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.