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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2023-01-23 15:36:11

  bakao - Zbanowany

bakao
Zbanowany
Zarejestrowany: 2020-11-15

Progressbar dla pliku

Hej. Mam sobie skrypt .sh który przetwarza plik .txt, powiedzmy ok 2k linijek. W zmiennej p mam ilość lini w pliku:

Kod:

p=`wc -l $file | cut -f1 -d " "`

zmienna i startuje od 1 i jest inkrementwana po każdej przeprocesowanej linijce. Za procesowanie linijek odpowaida kod:

Kod:

while IFS= read -r line; do
    echo "[$i/$p] $line"
    (( i++ ))
done < $file

Chciałbym za pomocą pv lub innego narzędzia pokazać progressbara. Jak to zrobić?

Offline

 

#2  2023-01-26 14:48:12

  seler - Użytkownik

seler
Użytkownik
Zarejestrowany: 2012-05-15

Re: Progressbar dla pliku

Hmm, pv raczej się do tego nie nada. Najprościej napisać własny progressbar.
Coś w stylu:

Kod:

progressbar() {
    #input: $1 - percentage
    #       $2 - total_length (in characters, optional)
    local i total_length
    [[ "$total_length" ]] || total_length=60
    chars_completed="$( bc <<< "scale=0; ${total_length}*${1}/100" )"

    echo -en "\r                                                                                         \r"
    echo -n "Progress : ["
    for ((i=0;i<$total_length;i++)); do
    if [[ "$i" -lt "$chars_completed" ]]; then
        echo -n '#'
    else
        echo -n '-'
    fi
    done
    echo -n "] ${1}%"
}

Ostatnio edytowany przez seler (2023-01-26 14:48:49)


a to feler westchnął seler

Offline

 

#3  2023-03-01 08:18:06

  Lorenzo - Moderator

Lorenzo
Moderator
Zarejestrowany: 2005-12-23

Re: Progressbar dla pliku

Możesz spróbować zenity:

Kod:

for i in `seq 10` ; do echo $i*10|bc -l ; sleep 0.5 ;done | zenity --progress

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)