Bash: problème avec while

LezardMoo Messages postés 554 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
Bonsoir à tous !!!


voila je suis coincé avec un petit problème,

j=1 
while [ $j -lt 11 ]
do
mplayer 'head -$j /home/clem/Musique/test3 | tail -1' -vc null -vo null -ao pcm:file=/home/clem/Musique/Diab-Laury/'head -$n/home/clem/Musique/SoundCloud/.soundcloud/nom | tail -1'.wav


alors voila, ne sais pas comment remplacer la varibla $n par un nom. c'est en fait une liste de nom dans un fichier

j'ai testé

plusieurs chose ainsi que ca:

j=1 
while [ $j -lt 11 ]
do
n=0
while [ $n -lt 11 ]
do
n=$n+1
done
mplayer 'head -$j /home/clem/Musique/SoundCloud/.soundcloud/test3 | tail -1' -vc null -vo null -ao pcm:file=/home/clem/Musique/SoundCloud/Diab-Laury/'head -$n /home/clem/Musique/SoundCloud/.soundcloud/nom | tail -1'.wav
let j=$j+1
done


mais ca marche pas non plus.

merci d'avance à tous

A voir également:

10 réponses

Utilisateur anonyme
 
salut,

si tu commançais par exposer ton problème plus clairement, tu aurais, par toi-même peut-être, un début de réponse.

décris plus précisément le problème, avec des échantillons de tes fichiers.

ce que tu as
ce que tu veux
les étapes pour obtenir ce que tu veux
les obstacles que tu rencontres
à quel niveau
1
LezardMoo Messages postés 554 Date d'inscription   Statut Membre Dernière intervention   14
 
hello !!

oui effectivement d'habitude j'explique un peu mieux ^^

alors en fait, ma boucle sert à générer le paramètre pour la commande 'head'

head -1 fichier par exemple, ben la je voulais utiliser une boucle pour remplacer le 1 par des valeurs.
en fait jusque là ca fonctionne. Maintenant le petit hic c'est que dans ma commande j'ai 2 fois la commande 'head' avec des param differents

mplayer '<souligne>head </souligne>-$j /home/clem/Musique/test3 | tail -1' -vc null -vo null -ao pcm:file=/home/clem/Musique/Diab-Laury/'head -$n/home/clem/Musique/SoundCloud/.soundcloud/nom | tail -1'.wav


si je fait un boucle pour le premier 'head', aucun problème

j=1 
while [ $j -lt 11 ]
do
mplayer '<souligne>head </souligne>-$j /home/clem/Musique/test3 | tail -1' -vc null -vo null -ao pcm:file=/home/clem/Musique/Diab-Laury/'head -$n/home/clem/Musique/SoundCloud/.soundcloud/nom | tail -1'.wav
let j=$j+3
done


le parametre du premier 'head' est bien remplacé.

par contre le paramètre du second 'head' (que j'aimerais simplement incrementer de 1) je ne sais pas comment le générer par ce que je suis dans la meme comande.

Merci d'avance ;), j'espère que c'est clair...
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
le deuxième head peut-être remplacé par une boucle:
....pcm:file=/home/clem/Musique/Diab-Laury/$(for n in 1 2 3 4;do head -$n....... ; done).wav
0
Utilisateur anonyme
 
musiques=~/Musique
j=1
while [ $j -lt 11 ]
do
   mplayer 'sed -n ${j}p $musiques/test3' -vc null -vo null -ao pcm:file=$musiques/Diab-Laury/'sed -n $((j+1))p $musiques/SoundCloud/.soundcloud/nom'.wav
   j=$((j+3))
done
ou bien
musiques=~/Musiques
while read -r fichier
do
   j=$((j+1))
   test $j -lt 11 && mplayer "$fichier" -vc null -vo null -ao pcm:file=$musiques/Diab-Laury/'sed -n $((j+1))p $musiques/SoundCloud/.soundcloud/nom'.wav || break
done <$musiques/test3


mais pourquoi 11 ? il y a quelque chose après la onzième ligne, ou le fichier ne compte-t-il que onze lignes ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
LezardMoo Messages postés 554 Date d'inscription   Statut Membre Dernière intervention   14
 
oui il y a onze ligne, 1vide plus les 10autres ^^

en gros je wget une source, je recup les lignes voulu dans un fichier
je prend ce fichier je recup 2 sortes d'info, un lien et un nom.
les liens sont pour mplayer et les nom sont pour les titre des sons (second head)

pour être clair le script permet de dl un son de soundcloud ou alors tout les sons d'une page.

il fonctionne très bien, j'avais juste remplacé les titres par l'heure minute seconde pour ne pas 'quil s'ecrase xD

Je viens de tester avec le for, ca marche... mais ca me lit que la première ligne de mon fichier, les autres lignes ne sont pas lues... enfin il me dl bien chaque fichier mais lui donne comme nom la première ligne... du coup ca ecrase a chaque fois
0
Utilisateur anonyme
 
montre-nous les fichiers, et un exemple de commande type, ce sera plus clair.


on reprend
d'abord
wget -O page_reçue.html http://page_demandée.html
ensuite...

comment en arrives-tu à avoir deux fichiers ?
0
LezardMoo
 
#extraction des lignes contenant l'url du flux audio vers scd.txt
        grep 'http://media.soundcloud.com/stream/' 'ls -l | head -2 | tail -1 | cut -d\  -f 13' > scd.txt

        #extraction des titres
        cat scd.txt | awk -F 'title' '{print $2}' | awk -F '\"' '{print $3}' | tr ' ' '-' > title.txt

ensuite

i=3
        while [ $i -lt 30 ]
        do
        head -$i /Users/cfiguiere/Music/SoundCloud/.soundcloud/scd.txt | awk -F 'streamUrl' '{print $2}' | awk -F '\"' '{print $3}' | tail -3 >> /Users/cfiguiere/Music/SoundCloud/.soundcloud/test2
        let i=$i+3
        done
        cat /Users/cfiguiere/Music/SoundCloud/.soundcloud/test2 | sort -u >> /Users/cfiguiere/Music/SoundCloud/.soundcloud/test3


et la fameuse boucle de la fin

j=1
		while [ $j -lt 11 ]
		do
		mplayer 'head -$j /Users/cfiguiere/Music/SoundCloud/.soundcloud/test3 | tail -1' -vc null -vo null -ao pcm:file=/Users/cfiguiere/Music/SoundCloud/'head -1 /Users/cfiguiere/Music/SoundCloud/.soundcloud/scd.txt | awk -F 'username' '{print $2}' | awk -F '\"' '{print $3}' | tr ' ' '-''/$(for t in 1 2 3 4 5 6 7 8 9 10;do head -$t /Users/cfiguiere/Music/SoundCloud/.soundcloud/title | tail -1 ; done).wav
		let j=$j+1 
		done


ca aide assez ?
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Salut,

On pourrait avoir le fichier source s'il te plaît ? (cjoint ou autres)
Et à la limite un exemple de ce que chacune de tes commandes est censée retourner ?
0
LezardMoo
 
ben ca m'embete un peu, pas que je ne veux pas le partager, bien au contraire mais j'aimerais le finir avant. par contre je peux l'envoyer par mail si vous voulez :)
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
bien au contraire mais j'aimerais le finir avant.
Pas compris désolé ;-(
0
LezardMoo Messages postés 554 Date d'inscription   Statut Membre Dernière intervention   14
 
j'ai pas envie de le poster comme ca, il est fonctionnel a part mon prob avec la boucle donc je propose de l'envoyer par mail ou par la poste si tu veux ^^
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
On parle bien de la même chose, à savoir le fichier source (html) récupéré par la commande wget ?
0
LezardMoo Messages postés 554 Date d'inscription   Statut Membre Dernière intervention   14
 
et pour info, voila les messages ressorti par mplayer

AO PCM] File: /Users/cfiguiere/Music/SoundCloud/Roaring-Spirit/Teachings-Of-Dub-Part-01 (WAVE)
PCM: Samplerate: 44100Hz Channels: Stereo Format s16le
[AO PCM] Info: Faster dumping is achieved with -vc null -vo null -ao pcm:fast
[AO PCM] Info: To write WAVE files use -ao pcm:waveheader (default).
AO: [pcm] 44100Hz 2ch s16le (2 bytes per sample)
Video: no video
Starting playback...
A: 208.1 (03:28.1) of 208.0 (03:28.0)  0.7% 0% 

Playing Phenix.
File not found: 'Phenix'
Failed to open Phenix.


Playing Warrior-Style-Part-2---Mix.
File not found: 'Warrior-Style-Part-2---Mix'
Failed to open Warrior-Style-Part-2---Mix.


Playing Warrior-Style-Part-1---Mix.
File not found: 'Warrior-Style-Part-1---Mix'
Failed to open Warrior-Style-Part-1---Mix.


Playing Dawn-Stepper-(dub2).
File not found: 'Dawn-Stepper-(dub2)'
Failed to open Dawn-Stepper-(dub2).
0
LezardMoo Messages postés 554 Date d'inscription   Statut Membre Dernière intervention   14
 
et voila http://dl.free.fr/getfile.pl?file=/rEi3rWUq

mais pourquoi tu veux le code source de la page, zip31 ?
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Pour voir ce que tu veux exactement récupérer et s'il n'y a pas plus simple à faire...

Par contre j'ai besoin de savoir ce que sont censées récupérer exactement les commandes suivantes :

#extraction des lignes contenant l'url du flux audio vers scd.txt
        grep 'http://media.soundcloud.com/stream/' 'ls -l | head -2 | tail -1 | cut -d\  -f 13' > scd.txt

        #extraction des titres
        cat scd.txt | awk -F 'title' '{print $2}' | awk -F '\"' '{print $3}' | tr ' ' '-' > title.txt

Je n'ai pas bien pigé ton grep sur la sortie de "ls...."
0
LezardMoo Messages postés 554 Date d'inscription   Statut Membre Dernière intervention   14
 
ca c'est parce que je n'ai pas utilisé wget -o name url xD
c'est du moi prose de tete a 100%, en fait je bosse dans un dossier dont le contenu est effacé a chaque fin du script, donc en gros le grep agit sur le seul fichier ( a ce moment là du script) qui est présent dans le dossier.

ensuite pour les titre, je recup le fichier scd et je recherche le mot "title" en decoupant tout ce qu'il y a autour pour pouvoir récup uniquement les titre des sons que je retravail pour remplacer les espace par '-' et je renvoi tout ca dans un fichier qui sera utilié par la suite dans mplayer pour donner un nom au son. (c'est que je coince avec ce fichiet et ma boucle contenant la commande mplayer)
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
et je renvoi tout ca dans un fichier qui sera utilié par la suite dans mplayer pour donner un nom au son. (c'est que je coince avec ce fichiet et ma boucle contenant la commande mplayer)
D'où ma demande ;-\

Si on ne sait pas ce que tu récupères en sortie et comment, il nous sera difficile de t'aider et encore moins de trouver où ça coince.

Donc, merci de nous donner les compléments d'infos demandés !

A savoir, pour chaque commande de ton script, et à chaque étape, une idée de ce qui entre et sort et de ce que tu voudrais réellement.

Par exemple pour le fichier que tu m'as envoyé, qu'est-ce qui doit rester après traitement et se trouver dans le fichier "scd.txt" ???
0
LezardMoo Messages postés 554 Date d'inscription   Statut Membre Dernière intervention   14
 
je ressort ca

window.SC.bufferTracks.push({"id":48365485,"uid":"JTIyyF0lPsDv","user":{"username":"Roaring Spirit","permalink":"roaringspirit"},"uri":"/roaringspirit/teachings-of-dub-part-01","duration":1431088,"token":"mUBNY","name":"teachings-of-dub-part-01","title":"Teachings Of Dub Part 01","commentable":true,"revealComments":true,"commentUri":"/roaringspirit/teachings-of-dub-part-01/comments/","streamUrl":"http://media.soundcloud.com/stream/JTIyyF0lPsDv?stream_token=mUBNY","waveformUrl":"http://w1.sndcdn.com/JTIyyF0lPsDv_m.png","propertiesUri":"/roaringspirit/teachings-of-dub-part-01/properties/","statusUri":"/transcodings/JTIyyF0lPsDv","replacingUid":null,"preprocessingReady":true,"renderingFailed":false,"isPublic":true,"geo":[],"commentableByUser":true,"favorite":false,"followingTrackOwner":false});
window.SC.bufferTracks.push({"id":44519972,"uid":"8M9mn0IjSW5i","user":{"username":"Roaring Spirit","permalink":"roaringspirit"},"uri":"/roaringspirit/phenix","duration":208196,"token":"Fh2Wm","name":"phenix","title":"Phenix","commentable":true,"revealComments":true,"commentUri":"/roaringspirit/phenix/comments/","streamUrl":"http://media.soundcloud.com/stream/8M9mn0IjSW5i?stream_token=Fh2Wm","waveformUrl":"http://w1.sndcdn.com/8M9mn0IjSW5i_m.png","propertiesUri":"/roaringspirit/phenix/properties/","statusUri":"/transcodings/8M9mn0IjSW5i","replacingUid":null,"preprocessingReady":true,"renderingFailed":false,"isPublic":true,"geo":[],"commentableByUser":true,"favorite":false,"followingTrackOwner":false});
window.SC.bufferTracks.push({"id":34814028,"uid":"inMUQpwy2aKP","user":{"username":"Roaring Spirit","permalink":"roaringspirit"},"uri":"/roaringspirit/warrior-style-part-2-mix","duration":2266043,"token":"6DJVj","name":"warrior-style-part-2-mix","title":"Warrior Style Part 2 - Mix","commentable":true,"revealComments":true,"commentUri":"/roaringspirit/warrior-style-part-2-mix/comments/","streamUrl":"http://media.soundcloud.com/stream/inMUQpwy2aKP?stream_token=6DJVj","waveformUrl":"http://w1.sndcdn.com/inMUQpwy2aKP_m.png","propertiesUri":"/roaringspirit/warrior-style-part-2-mix/properties/","statusUri":"/transcodings/inMUQpwy2aKP","replacingUid":null,"preprocessingReady":true,"renderingFailed":false,"isPublic":true,"geo":[],"commentableByUser":true,"favorite":false,"followingTrackOwner":false});
window.SC.bufferTracks.push({"id":34078724,"uid":"it3xDPhavXNB","user":{"username":"Roaring Spirit","permalink":"roaringspirit"},"uri":"/roaringspirit/warrior-style-part-1-mix","duration":2319902,"token":"eoHE9","name":"warrior-style-part-1-mix","title":"Warrior Style Part 1 - Mix","commentable":true,"revealComments":true,"commentUri":"/roaringspirit/warrior-style-part-1-mix/comments/","streamUrl":"http://media.soundcloud.com/stream/it3xDPhavXNB?stream_token=eoHE9","waveformUrl":"http://w1.sndcdn.com/it3xDPhavXNB_m.png","propertiesUri":"/roaringspirit/warrior-style-part-1-mix/properties/","statusUri":"/transcodings/it3xDPhavXNB","replacingUid":null,"preprocessingReady":true,"renderingFailed":false,"isPublic":true,"geo":[],"commentableByUser":true,"favorite":false,"followingTrackOwner":false});
window.SC.bufferTracks.push({"id":27426870,"uid":"Qv2FNi6N0aPx","user":{"username":"Roaring Spirit","permalink":"roaringspirit"},"uri":"/roaringspirit/dawn-stepper-dub2","duration":229390,"token":"i75eZ","name":"dawn-stepper-dub2","title":"Dawn Stepper (dub2)","commentable":true,"revealComments":true,"commentUri":"/roaringspirit/dawn-stepper-dub2/comments/","streamUrl":"http://media.soundcloud.com/stream/Qv2FNi6N0aPx?stream_token=i75eZ","waveformUrl":"http://w1.sndcdn.com/Qv2FNi6N0aPx_m.png","propertiesUri":"/roaringspirit/dawn-stepper-dub2/properties/","statusUri":"/transcodings/Qv2FNi6N0aPx","replacingUid":null,"preprocessingReady":true,"renderingFailed":false,"isPublic":true,"geo":[],"commentableByUser":true,"favorite":false,"followingTrackOwner":false});
window.SC.bufferTracks.push({"id":27426434,"uid":"qpeDlaJKmQbV","user":{"username":"Roaring Spirit","permalink":"roaringspirit"},"uri":"/roaringspirit/tribulation-rmx","duration":211567,"token":"7YODd","name":"tribulation-rmx","title":"Tribulation (rmx)","commentable":true,"revealComments":true,"commentUri":"/roaringspirit/tribulation-rmx/comments/","streamUrl":"http://media.soundcloud.com/stream/qpeDlaJKmQbV?stream_token=7YODd","waveformUrl":"http://w1.sndcdn.com/qpeDlaJKmQbV_m.png","propertiesUri":"/roaringspirit/tribulation-rmx/properties/","statusUri":"/transcodings/qpeDlaJKmQbV","replacingUid":null,"preprocessingReady":true,"renderingFailed":false,"isPublic":true,"geo":[],"commentableByUser":true,"favorite":false,"followingTrackOwner":false});
window.SC.bufferTracks.push({"id":27426251,"uid":"DcFLBjxLpZ5c","user":{"username":"Roaring Spirit","permalink":"roaringspirit"},"uri":"/roaringspirit/tribulation-dub-rmx","duration":212377,"token":"N8wXi","name":"tribulation-dub-rmx","title":"Tribulation Dub (rmx)","commentable":true,"revealComments":true,"commentUri":"/roaringspirit/tribulation-dub-rmx/comments/","streamUrl":"http://media.soundcloud.com/stream/DcFLBjxLpZ5c?stream_token=N8wXi","waveformUrl":"http://w1.sndcdn.com/DcFLBjxLpZ5c_m.png","propertiesUri":"/roaringspirit/tribulation-dub-rmx/properties/","statusUri":"/transcodings/DcFLBjxLpZ5c","replacingUid":null,"preprocessingReady":true,"renderingFailed":false,"isPublic":true,"geo":[],"commentableByUser":true,"favorite":false,"followingTrackOwner":false});
window.SC.bufferTracks.push({"id":27425623,"uid":"xdYhdPXAfeWE","user":{"username":"Roaring Spirit","permalink":"roaringspirit"},"uri":"/roaringspirit/wood-stepper","duration":205139,"token":"8z4TG","name":"wood-stepper","title":"Wood Stepper","commentable":true,"revealComments":true,"commentUri":"/roaringspirit/wood-stepper/comments/","streamUrl":"http://media.soundcloud.com/stream/xdYhdPXAfeWE?stream_token=8z4TG","waveformUrl":"http://w1.sndcdn.com/xdYhdPXAfeWE_m.png","propertiesUri":"/roaringspirit/wood-stepper/properties/","statusUri":"/transcodings/xdYhdPXAfeWE","replacingUid":null,"preprocessingReady":true,"renderingFailed":false,"isPublic":true,"geo":[],"commentableByUser":true,"favorite":false,"followingTrackOwner":false});


mais heuuu... la seule chose qui coince c'est que je ne suis pas au point pour la boucle while avec $i et $j a l'intérieure en fait
0
LezardMoo Messages postés 554 Date d'inscription   Statut Membre Dernière intervention   14
 
bon si je precise pas, pas d'interet.

en gros ca me ressort tout les lignes contenant ceci: "streamUrl":"http://media.soundcloud.com/stream
0
Utilisateur anonyme
 
awk '/http:\/\/media\.soundcloud\.com\/stream\//{   
      split($0,a,"title")   
      split($0,b,"streamUrl")   

   gsub(" ","_",a[2])   
   split(a[2],c,"\"")   
   split(b[2],d,"\"")   

   print c[3]" "d[3]   
}' ~/Téléchargements/roaringspirit | while read titre adresse 
do echo mplayer "$adresse" -vc null -vo null -ao "pcm:$titre" 
done


fichiers temporaires? a p'u!
code plus que bizarroïde? a p'u!

ça devrait fonctionner.
si le code affiche ce que tu veux, enlève le 'echo'.
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Salut,

while read titre adresse
do echo mplayer "$adresse" -vc null -vo null -ao "pcm:$title"


Y'aurait-y pas comme un os ? ;-\

;-))
0
Utilisateur anonyme
 
rhoo, tu chipotes :)

j'ai corrigé, merci.
0