Aller au menu - Aller au contenu

multirenommage - tuto "Les boucles"

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page 1 
Auteur Message
2 visiteurs sur ce sujet (2 anonymes)
Page 1 
Hors ligne Geff # Posté le 04/02/2012 à 16:37:05
Avatar

(re)Bonjour à vous,

Je suis le tuto sur Linux, et j'en suis aux boucles.
J'ai fait un script pour l'exercice de fin de tuto, mais je n'arrive pas à comprendre pourquoi il ne fonctionne pas...
Je me suis inspiré des scripts donnés en correction à la suite du tuto (en bas de la page).
Le voici :

Code : Bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
if [ $# -eq 0 ]
then
	read -p "Veuillez saisir un type d'extension (ext) : " ext
	multireno.sh $ext
fi


for fichier in `ls`
do
	extension=`find -name $fichier || cut -d . -f 2`
	if [ $extension = $ext ]
	then
		mv $fichier $fichier-old
	fi
done		

ls -l


Merci
Publicité # Posté le 04/02/2012 à 16:37:05

Hors ligne Geff # Posté le 06/02/2012 à 12:30:16
Avatar

Up !!
Hors ligne Caelifer # Posté le 06/02/2012 à 14:36:35
Les pensées sont des flowers
Avatar

Ville : Troyes
Pays : France métropolitaine
Études : UTT

Bonjour,

Je suppose que ton script s'appelle multireno.sh et qu'il s'appelle lui même dans ton script ?
Déjà là tu as un problème, si on passe un argument à ton script au lancement, celui ci plante.
Il faut plutôt quelque chose comme ça :
Code : Bash
1
2
3
4
5
6
if [ $# -eq 0 ]
then
read -p "Choisir une extension : " ext
else
ext=$1
fi


Ca résout déja le premier problème quand tu appelles multireno.sh. Pour appeler un script qui ne se trouve pas dans un répertoire de $PATH, on doit utiliser ./script.sh ou bash script.sh (si ton script est en bash évidemment).

Ton find à la ligne 10 est inutile, ta boucle te donne à chaque tour le nom d'un fichier, pas la peine de refaire une recherche dessus. Surtout que ton ls te donne les fichiers dans le dossier courant mais le find va lui te donner tous les fichiers situés dans les sous dossiers. Le renommage pourrait avoir un comportement inattendu.
Toujours ligne 10, le "||". Un seul pipe suffit ;)

Le reste a l'air de fonctionner, j'ai testé chez moi.
Édité le 06/02/2012 à 14:37:53 par Caelifer

Là, tout n'est qu'ordre et beauté, luxe, calme et volupté.
CB
 

Retour au forum "Linux et *BSD" ou à la liste des forums

Pour accéder à cette section
Connectez-vous !
connexion_rpx