Anelkul, hogy megprobalnam megerteni, mit csinal a kod (kora hajnal van meg, ez ilyenkor nem megy):
anyupdate=0
for u in $(porg -a | grep "$PACKNAME"); do
name="$(echo $u | sed 's/-[0-9].*//')"
ver=$(echo $u | sed "s/$name\-//")
new_ver="$(cat $VERSION | grep "$name" | sed "s/\.tar\.gz//;s/\.tar\.bz2//;s/\.src//;s/\.tar\.xz//")"
if [ "$name-$ver" != "$new_ver" ]; then
echo -e "$name-$ver $g -->$def $r $new_ver$def"
anyupdate=$((anyupdate + 1))
fi
done
if [ "${anyupdate}" -eq 0 ]; then
echo -e "$r Nincs frissítés.$def $g:)$def"
else
echo -e "$r $anyupdate db csomag frissíthető"
fi
Btw, az echo-knal en angol kiirast alkalmaznek, es megismerkednek a gettext nevu parancs hasznalataval. Bovebben lsd: https://github.com/meonkeys/bash-i18n-example
Ami a progress baros kerdest illeti, azt a) elfelejtenem b) megbaratkoznek a gondolattal, hogy "dialog" alapon irom ki. Rendes progress bart csinalni nativ bash-bol nem annyira trivialis, mivel a nyelv maga egy stateless cucc, az egyes programok nem tudjak rendesen a kozponti kornyezetben tarolni az allapotukat ket meghivas kozott.
Amit helyette ajanlok: felejtsd el a progress bart, ird ki csak a szazalekot paddingolva, es akkor azt 3 backspace jellel vissza tudod torolni.
Demonstracio:
#!/bin/bash
echo -ne "Progress: 0%"
for i in $(seq 1 100); do
sleep 1
echo -ne "\b\b\b\b$(printf "%3d%%" ${i})"
done
echo
Egyvalamire figyelj nagyon: a folyamatjelzo lefutasa utan mindenkepp kell egy ures echo, hogy visszaalljon a rendes kiirasi ciklus. Ha fuggvenyeket irsz a dologra, mindenkeppen kell egy "progressbreak" fuggveny is, hogy a hibajelzeseket ki tudd szepen irni.
--
Ki oda vágyik, hol száll a galamb, elszalasztja a kincset itt alant:
()=()
('Y') Blog | @hron84
C . C Üzemeltető macik
()_()