Contenu | Rechercher | Menus

Annonce

Ubuntu-fr.org recrute toujours de nouveaux modérateurs, avec de l'expérience.

Ubuntu 16.04 LTS
Réservez vos DVD et clé USB Ubuntu-fr (premières livraisons mi-mai)

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

#1 Le 12/07/2010, à 19: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, à 20: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, à 20:07)


eval, c'est mal.

Hors ligne

#3 Le 12/07/2010, à 20: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, à 11:15

iuchiban

Re : un test si qui ne fonctionne pas

Gotita a écrit :

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