Bonjour,
J'utilise un script "mencoder" qui me donne les pourcentages d'avancement de l'encodage. Je souhaite utiliser ces pourcentages d'avancement dans une barre de progression.
J'ai complété le script "mencoder" avec une fonction "ProgressBar" du type de celle qu'utilise wget.
Mon problème est que je n'arrive pas à exploiter les innombrables pourcentages qui sortent du script mencoder sous la forme :
1
1
1
2
2
2
3
3
3
etc... jusqu'à 100.
Il faudrait que je puisse passer tous ces chiffres à la fonction ProgressBar pour que celle-ci puisse afficher l'avancement.
Pourriez-vous m'aider ? Merci d'avance.
# quelle librairie ?
Posté par djibb (site web personnel) . Évalué à 2.
du shell, du qt, du gtk ? parce que bon...les progress bar ne sont pas très standradds entre elles...ça change à chaque fois
[^] # Re: quelle librairie ?
Posté par Jean B . Évalué à 2.
Ça donnerai plutot ça donc:
for progress in $(./script.sh)
do
echo "p: $progress"
done
Il faut bien entendu remplacer l'echo par sa fonction de progress bar.
[^] # Re: quelle librairie ?
Posté par ✅ ffx . Évalué à 3.
# J'ai du mal à être clair. Je recommence.
Posté par redrum . Évalué à 1.
Imaginons un script bash avec deux fonctions :
une fonction Encodage
une fonction ProgressBar
La fonction Encodage aurait cette tête là :
function Encodage {
mencoder $tout_le_tralala 2>&1 | gawk -vRS='\r' '$1 ~ /Pos/ {gsub(/Pos:/," ");gsub(/%)/," ");gsub(/ \(/," ");if ($3>0)print $3; fflush();}' | zenity --progress --auto-close
}
La fonction ProgressBar aurait cette tête là :
function ProgressBar {
if [ -z $1 ]; then
echo "Remember to set value for the progress bar"
echo "progressbar percent [bar-char] [empty-char]"
exit
fi
SOME="="
EMPTY=" "
COLUMNS=80
LEFT=$(($COLUMNS*100/20))
BAR_LENGTH=$(($(($COLUMNS*100))-$((2*$LEFT))-200))
DOT=$(($BAR_LENGTH/100))
PERCENT=$(($1*$DOT))
NUMCHARS=0
for ((i=0;$i<$LEFT;i=$i+100))
do
echo -n " "
done
echo -n "|"
for ((i=0;$i<$PERCENT;i=$i+100))
do
echo -n "$SOME"
NUMCHARS=$NUMCHARS+1
done
for ((i=$PERCENT;i<$BAR_LENGTH && $NUMCHARS<$((BAR_LENGTH/100));i=$i+100))
do
echo -n "$EMPTY"
NUMCHARS=$NUMCHARS+1
done
echo "|"
}
Comment je peux faire pour que ProgressBar puisse récupérer les informations de pourcentage ?
[^] # Re: J'ai du mal à être clair. Je recommence.
Posté par Jean B . Évalué à 2.
while read progress ; do echo ProgressBar progress ; done < <(Encodage)
[^] # Re: J'ai du mal à être clair. Je recommence.
Posté par ✅ ffx . Évalué à 2.
Cela devrait plutôt être
Encodage | while read progress ; do ProgressBar $progress ; done
[^] # Re: J'ai du mal à être clair. Je recommence.
Posté par redrum . Évalué à 1.
Par contre, évidemment, j'obtiens au final autant de barre de progression que de nombre de pourcentage d'avancement ...
[^] # Re: J'ai du mal à être clair. Je recommence.
Posté par ✅ ffx . Évalué à 2.
echo -n '|^M'
en tapant control-v control-m pour obtenir ^MSuivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.