Bash: problème avec while

Fermé
LezardMoo Messages postés 554 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 - 3 juin 2012 à 22:39
 Utilisateur anonyme - 6 juin 2012 à 15:18
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

10 réponses

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 mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 14
5 juin 2012 à 10:38
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 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 5 617
5 juin 2012 à 12:07
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
5 juin 2012 à 13:02
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 mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 14
5 juin 2012 à 13:47
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
5 juin 2012 à 14:13
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
#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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
5 juin 2012 à 15:19
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
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
5 juin 2012 à 15:52
bien au contraire mais j'aimerais le finir avant.
Pas compris désolé ;-(
0
LezardMoo Messages postés 554 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 14
5 juin 2012 à 15:54
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
5 juin 2012 à 15:59
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 mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 14
5 juin 2012 à 14:53
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 mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 14
Modifié par LezardMoo le 5/06/2012 à 16:08
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
5 juin 2012 à 16:19
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 mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 14
5 juin 2012 à 16:25
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
5 juin 2012 à 16:31
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 mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 14
5 juin 2012 à 16:41
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 mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 14
5 juin 2012 à 16:42
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
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
6 juin 2012 à 14:45
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
6 juin 2012 à 15:18
rhoo, tu chipotes :)

j'ai corrigé, merci.
0