#1 Le 30/06/2013, à 07:48
- Compte supprimé
[Résolu] Awk récupérer une variable
Bonjour la communauté,
Voici le code suivant :
#! /bin/bash
coefficientPourcent="0.33"
mplayer -dvd-device /dev/sr0 -dumpstream dvdnav://1 -dumpfile "/home/$USER/test.vob" 2>&1 |
awk -v coefficientPourcent="$coefficientPourcent" -vRS='\r' -F [~.] '/%)/ {
{pourcentMplayer = $2} ;
{pourcentZenity = (pourcentMplayer*coefficientPourcent)} ;
printf pourcentZenity
printf "\n# %d %\n" , pourcentZenity ; fflush();}' |
zenity --progress \
--title="Mplayer ripe le titre" \
--auto-close
echo "pourcentZenity : $pourcentZenity"
Mplayer démarre et awk récupère le pourcentage pour l’envoyer à Zenity.
Quand Mplayer arrive à 100% cela ferme la fenêtre Zenity.
Au moment de la fermeture, Zenity affichera 33% à cause du coefficientPourcent qui est de 0.33 (100% * 0.33 = 33%)
Mon problème : j'aimerais récupérer la variable "pourcentZenity" pour la suite de mon script.
Je pense que mon problème viens du fait que je passe par un pipe et que je crée un sous script ????
PS
Le but final serai d'avoir la possibilité de copier plusieurs titres mais avec une seul barre de progression... via une une boucle for et cie... en cas de nécessité je peux vous mettre le code complet...
Amicalement Sly
Dernière modification par Compte supprimé (Le 01/07/2013, à 17:08)
#2 Le 30/06/2013, à 11:24
- credenhill
Re : [Résolu] Awk récupérer une variable
hello
passer par un fichier; dans le awk:
printf pourcentZenity > "/tmp/pcz"
dans le shell
pcz=$(</tmp/pcz)
Hors ligne
#3 Le 30/06/2013, à 21:06
- Compte supprimé
Re : [Résolu] Awk récupérer une variable
Merci credenhill pour ta réponse !
J'ai modifié le script avec ta proposition...
#! /bin/bash
coefficientPourcent="0.33"
mplayer -dvd-device /dev/sr0 -dumpstream dvdnav://11 -dumpfile "/home/$USER/test.vob" 2>&1 |
awk -v coefficientPourcent="$coefficientPourcent" -vRS='\r' -F [~.] '/%)/ {
{pourcentMplayer = $2} ;
{pourcentZenity = (pourcentMplayer*coefficientPourcent)} ;
printf pourcentZenity > "/tmp/pcz"
printf pourcentZenity
printf "\n# %d %\n" , pourcentZenity ; fflush();}' |
zenity --progress \
--title="Mplayer ripe le titre" \
--auto-close
pcz=$(</tmp/pcz)
echo "pcz : $pcz"
Le hic c'est que cela fonctionne pas tout temps... soit mon echo "pcz : $pcz" est vide ou affiche 0 alors que la valeur de pourcentZenity de la fenêtre de Zenity est supérieur à 0...
J'avance mais il y a encore quelque chose qui cloche ???
Amicalement Sly
#4 Le 01/07/2013, à 07:31
- credenhill
Re : [Résolu] Awk récupérer une variable
essayer un fflush
printf pourcentZenity > "/tmp/pcz"; fflush("/tmp/pcz");
Hors ligne
#5 Le 01/07/2013, à 17:07
- Compte supprimé
Re : [Résolu] Awk récupérer une variable
Merci cette fois c'est bon !!!
Voilà le code en entier...
#! /bin/bash
coefficientPourcent="0.33"
mplayer -dvd-device /dev/sr0 -dumpstream dvdnav://18 -dumpfile "/home/$USER/test.vob" 2>&1 |
awk -v coefficientPourcent="$coefficientPourcent" -vRS='\r' -F [~.] '/%)/ {
{pourcentMplayer = $2} ;
{pourcentZenity = (pourcentMplayer*coefficientPourcent)} ;
printf pourcentZenity
printf "%d\n" , pourcentZenity > "/tmp/pcz"; fflush("/tmp/pcz");
printf "\n# %d %\n" , pourcentZenity ; fflush();}' |
zenity --progress \
--title="Mplayer ripe le titre" \
--auto-close
pcz=$(</tmp/pcz)
echo "pcz : $pcz"
J'ai un peu modifié ton code
printf pourcentZenity > "/tmp/pcz"; fflush("/tmp/pcz");
par
printf "%d\n" , pourcentZenity > "/tmp/pcz"; fflush("/tmp/pcz");
afin d'avoir un retour de chariot car pour finir je pense que je vais opter pour ça...
printf "%d\n" , pourcentZenity >> "/tmp/pcz"; fflush("/tmp/pcz");
qui permets de stocker tous les pourcentages... bref
Encore Merci à toi !!!!
Amicalement Sly
Dernière modification par Compte supprimé (Le 01/07/2013, à 17:14)
#6 Le 02/07/2013, à 07:24
- credenhill
Re : [Résolu] Awk récupérer une variable
tant qu'on ne fait pas de close("/tmp/pcz") > agit comme >>, il ajoute (cf man awk)
Hors ligne
#7 Le 02/07/2013, à 10:59
- Compte supprimé
Re : [Résolu] Awk récupérer une variable
tant qu'on ne fait pas de close("/tmp/pcz") > agit comme >>, il ajoute (cf man awk)
Merci pour ce complément d'information.
Amicalement Sly