Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Witam! mam taką sprawę - mam skrypt w bashu wykonujący pewne operacje.
Trwa to około minuty. I teraz tak - czy jest możliwość aby zamiast na ekranie pojawiających się
wykonywanych operacji mogły by się pokazywać kropki (tak jak w niektórych usługach w linuxie)
czyli po uruchomieniu pokaże się komunikat : Wykonywanie skryptu ............. ( i kropka co sekunde aż do wykonania się całego skryptu) . Był bym wdzięczny za pomoc:)
Offline
Czyli wychodzi pętla a'la:
#!/bin/bash ./polecenie_które_wykonujesz & x=1; while [ $x -le 60 ] ; do # znak & dajesz, żeby uruchomić program w tle sleep 1 echo "." x=$[x + 1] done
Wykona 60 kropek, co 1 sekundę.
UPDATE:
Ooooops, kropki idą w dół, nie sprawdziłem tego skryptu :P Ale wydaje mi się, że to będzie właśnie coś z użyciem pętli ;)
Ostatnio edytowany przez Ventrue (2008-06-25 19:51:07)
Offline
Zamiast echo "." daj echo -n "."
a po pętli samo echo, by wyświetlić nową linie.
Możesz posłać aplikację w tło (za pomocą &) i ps sprawdzać co pewien czas czy aplikacja dalej działa, jesli nie to kropa :D
Podejrzewam jednak, że autorowi chodzi o coś innego ;D
Ostatnio edytowany przez urug (2008-06-25 20:24:08)
Offline
Nooo wszystko jest ok! z tym że skrypt jest widoczny jak się wykonuje, z kropkami jest ok:) Tylko jak to myknąć żeby były same kropki bez widocznego wykonującego się skryptu ( nawet & nie pomaga - tzn nie pokazuje wszystkiego ale pokazuje).
Offline
Przekieruj skrypt, który się wykonuje do /dev/null .
./skryptwykonywany >> /dev/null
A część z kropkami pozostaw tak jak jest .
Offline
Ventrue napisał(-a):
Czyli wychodzi pętla a'la:
Kod:
#!/bin/bash ./polecenie_które_wykonujesz & x=1; while [ $x -le 60 ] ; do # znak & dajesz, żeby uruchomić program w tle sleep 1 echo "." x=$[x + 1] doneWykona 60 kropek, co 1 sekundę.
Intryguje mnie to a'la. Powyższa pętla będzie działała przez minutę, co sekundę stawiając kropkę. Jest tym samym zupełnie niezależna od polecenia, którego działanie ma przecież w jakiś sposób przedstawiać – jeżeli polecenie zakonczy się wcześniej, kropki i tak zostaną dostawione. Jeżeli polecenie z jakiegoś powodu będzie się wykonywało dłużej, będzie na to wskazywał tylko fakt, że wciąż nie pojawił się znak zachęty.
Przeszukałem gugle, posiedziałem nad tym kilkadziesiąt minut i się poddałem. W jaki sposób w bash-u stworzyć pętlę, która wykonywałaby się tak długo, jak długo wykonuje się jakieś, określone, polecenie? Domyślam się, że należałoby skorzystać z polecen trap i wait, ale nie udało mi się zrobić tego z powodzeniem.
Offline
sleep 30 & PID=`jobs -p 1` while [ -e /proc/$PID -a "$PID" != "" ]; do echo -n '.' sleep 1 done; echo ""
moznaby darowac sobie sprawdzanie /proc/$PID i pobierac PID w pętli i sprawdzać czy nie pusty, ale tak jest bardziej ogolnie ....
Ostatnio edytowany przez bercik (2008-06-27 02:02:21)
Offline
Strony: 1