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/.
Zbanowany

Hej. Mam sobie skrypt .sh który przetwarza plik .txt, powiedzmy ok 2k linijek. W zmiennej p mam ilość lini w pliku:
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:
while IFS= read -r line; do
echo "[$i/$p] $line"
(( i++ ))
done < $fileChciałbym za pomocą pv lub innego narzędzia pokazać progressbara. Jak to zrobić?
Offline

Użytkownik


Hmm, pv raczej się do tego nie nada. Najprościej napisać własny progressbar.
Coś w stylu:
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)
Offline



Moderator




Możesz spróbować zenity:
for i in `seq 10` ; do echo $i*10|bc -l ; sleep 0.5 ;done | zenity --progress
Offline