#1 Le 12/07/2010, à 18:40
- Gotita
un test si qui ne fonctionne pas
Bonjour,
J'ai un petit soucis sur un script que j'ai fais, voici le code :
for i in $(seq 0 2)
do
for j in $(seq 0 9) #Les deux for pour faire les 29 videos
do
if [ $i$j != 00 ] && [ $i$j < 23 ] # On prend en compte que les 22 premiers
then
titre=$(sed -n "$i$j"p "listing himym s2") #On recupere le titre de l'episode
cd /media/"USB"/"TV series"/"How I Met Your Mother"/"Season 2" #On change de repertoire
episode=$(find -name "*[e E]$i$j*.avi") #On recupere le nom complet de l'episode
soustitre=$(find -name "*[e E]$i$j*.srt") #On recupere le nom complet du sous titre
mv "$episode" "S02E$i$j - $titre.avi" #On modifie le nom de l'episode
mv "$soustitre" "S02E$i$j - $titre.srt" #On modifie le nom du sous titre
cd
fi
done
done
Explications : J'ai un dossier qui comporte la saison 2 de "How I Met Your Mother" avec les sous titres. Les fichiers vidéos sont de la forme "xxxx S2E12xxxxxx.avi" et donc j'ai récupéré les titres des différents épisodes (dans le fichier "listing himym s2" et hop je change le titre des vidéos et sous titres.
Le soucis vient du [ $i$j < 23 ] ( car il y a que 22 vidéos), la console me donne "./episode himym.sh: line 13: 23: Aucun fichier ou dossier de ce type"
Donc en attendant je fais :
if [ $i$j != 00 ] && [ $i$j != 23 ] && [$i$j != 24] .......
ainsi de suite jusqu'à 29
donc d'où vient mon soucis?
Merci
La vie d'un geek ne tient souvent qu'à un fil : un câble ethernet.
Hors ligne
#2 Le 12/07/2010, à 19:07
- Watael
Re : un test si qui ne fonctionne pas
for i in {0..2}{0..9}; do (( ${i#0} > 0 && ${i#0} < 23 )) && echo "$i"; done
Dernière modification par Watael (Le 12/07/2010, à 19:07)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 12/07/2010, à 19:31
- Gotita
Re : un test si qui ne fonctionne pas
Merci pour vos réponses, maintenant le script fonctionne.
@WW : Je ne savais pas comment faire pour avoir la forme 00,01,etc mais j'ai utilisé la commande de Watael et c'est bon.
Mais il n'y a pas d'équivalence avec les <> ?
La vie d'un geek ne tient souvent qu'à un fil : un câble ethernet.
Hors ligne
#4 Le 13/07/2010, à 10:15
- iuchiban
Re : un test si qui ne fonctionne pas
Mais il n'y a pas d'équivalence avec les <> ?
Voir l'excellent site :
http://abs.traduc.org/abs-fr/apb.html#bincomptab
Donc tu peux utiliser \> et \< mais seulement pour des comparaisons ASCII.
ou bien dans des doubles (( )) comme indiqué par watael
C'est depuis que Chuck Norris a laissé la vie sauve à un manchot que l'on dit que Linux est libre.
Chuck Norris n'a pas besoin d'éditer son premier message pour ajouter [Résolu]. Chuck Norris est toujours [Résolu], quoi qu'il arrive.
Hors ligne