Script en shell, redimensionner des images
Bonjour.
Je suis en train de travailler sur un script qui modifie la taille des images de mon fichier Images/
Il est possible que l'erreur que m'affiche mon shell soit très simple à résoudre, mais je commence à fatiguer.
Voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
#! /bin/bash
find *.png > mypicts
NBPICT=`wc -l mypicts | cut -d' ' -f1`
i=1
while (i < "$NBPICT")
{
IMG=`sed -n ${i} mypicts`
convert -resize 50% $IMG $(echo $IMG | sed s/\.png/_mini\.png/)
i++
};
rm mypicts |
Et voici le beau message d'erreur :
Code:
1 2
|
./picture_script: line 12: syntax error: unexpected end of file |
A SAVOIR
La commande convert n'est disponible qu'après avoir téléchargé le paquet "imagemagick"
J'ai Mandriva comme distribution, en VM
EXPLICATION DU CODE :
Donc au départ je trouve tout les .png de mon dossier Images/, et je les met dans un fichier nommé "mypicts"
Ensuite, je compte le nombre d'images que contient mon dossier à l'aide du dossier nouvellement créé, et j'enregistre ce nombre dans la variable NBPICT :
Code:
1 2
|
NBPICT=`wc -l mypicts | cut -d' ' -f1` |
Puis vient ma boucle :
Code:
1 2 3 4 5 6 7 8
|
i=1
while (i < "$NBPICT")
{
IMG=`sed -n ${i} mypicts`
convert -resize 50% $IMG $(echo $IMG | sed s/\.png/_mini\.png/)
i++
}; |
Ma boucle est délimitée par ma variable NBPICT :
Je crée une variable IMG qui sera réinitialisée à chaque tour de boucle par le contenu d'une ligne de mon fichier "mypicts" (ainsi, au premier tour, IMG vaudra le nom de ma première image, au deuxième, le nom de la seconde, etc...) :
Code:
1 2
|
IMG=`sed -n ${i} mypicts` |
Puis je change la taille de l'image :
Code:
1 2
|
convert -resize 50% $IMG $(echo $IMG | sed s/\.png/_mini\.png/) |
Enfin je supprime le fichier "mypicts" pour pouvoir travailler sereinement la prochaine fois que je voudrait utiliser mon script (si j'ai moins d'images qu'avant par exemple) :
LES PROBLEMES
J'ai testé chacune de ses commandes séparément, ainsi
Code:
1 2
|
convert -resize 50% $IMG $(echo $IMG | sed s/\.png/_mini\.png/) |
fonctionne, ainsi que
Code:
1 2
|
IMG=`sed -n s{i} mypicts` |
C'est ma boucle en elle même qui me pose problème,
1ère question :
Code:
1 2
|
NBPICT=`wc -l mypicts | cut -d' ' -f1` |
NBPICT est un nombre, ou bien une chaine de caractère coupée, si c'est un nombre, alors il n'y a pas de problème à l'utiliser dans :
en revanche, si c'est une chaine de caractère tronquée, son utilisation dans "while" peut être compromettante.
2ème question :
Si le problème ne vient pas de là, d'où peut-il provenir ? (boucle mal faite peut-être).