Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 30/06/2013, à 07:48

Slyfox

[Résolu] Awk récupérer une variable

Bonjour la communauté, smile smile smile

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 ???? neutral hmm

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... smile

Amicalement Sly

Dernière modification par Slyfox (Le 01/07/2013, à 17:08)

Hors ligne

#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

Slyfox

Re : [Résolu] Awk récupérer une variable

Merci credenhill pour ta réponse ! smile

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

Hors ligne

#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

Slyfox

Re : [Résolu] Awk récupérer une variable

Merci cette fois c'est bon !!! smile

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 Slyfox (Le 01/07/2013, à 17:14)

Hors ligne

#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

Slyfox

Re : [Résolu] Awk récupérer une variable

credenhill a écrit :

tant qu'on ne fait pas de close("/tmp/pcz") > agit comme >>, il ajoute (cf man awk)

Merci pour ce complément d'information. smile

Amicalement Sly

Hors ligne