Je suis en train de suivre actuellement le chapitre sur les boucles dans le cours sur Linux.
Et il y a un petit exercice à faire:
À vous de jouer ! Essayez de créer un script multirenommage.sh, reposant sur ce principe, qui va rajouter le suffixe -old… uniquement aux fichiers qui correspondent au paramètre envoyé par l'utilisateur!
./multirenommage.sh *.txt
Si aucun paramètre n'est envoyé, vous demanderez à l'utilisateur de saisir le nom des fichiers à renommer avec read.
Voici le script que j'ai fait:
#!/bin/bash
if [ -z $1 ]
then
read -p 'Entrez le nom des fichiers: ' fichier
for variable in `ls`
do
if [ $variable = $fichier ]
then
mv $variable $variable-old
fi
done
else
for variable in `ls`
do
if [ $variable = $1 ]
then
mv $variable $variable-old
fi
done
fi
Le script a l'air de fonctionner.
Pouvez vous me donner votre avis sur ce que j'ai fait?
pourquoi ne testes-tu pas ton script ? tu verrais qu'il ne fait pas ce qui est demandé. parce que les boucles n'utilisent pas le paramètre positionnel.
avant que le script soit lu, *.txt va être développé en la liste des fichiers qui finissent par .txt, et c'est cette liste qui sera passée en paramètres positionnels au script.
si tu veux que le script prenne comme paramètre positionnel, littéralement, *.txt, il faut protéger l'astérisque pour empêcher le développement.
de plus, il faut toujours mettre des guillemets autour des variables, jusqu'à ce que tu saches pourquoi tu ne veux pas en mettre.
enfin, parser la sortie d'une substitution de commande est rarement une bonne idée, et ls en particulier, il est préférable d'utiliser les globs.
- Edité par dantonq 27 mai 2017 à 7:01:38
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
[script shell ] ... sur les boucles
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique