Script Shell [Défau]
Résolu
Bonjour,
Je suis en train d'essayer de creer un scrip shell afin de créer la miniature d'une image jpg en fonction de sa date de création. Seulement pour la boulce for à la fin du script il y à un problème car l'éxecution s'arrête juste avant et entre apparament dans une boucle infini... Je ne vois pas qu'est ce qui coince ... quelqun pourrait m'aider ?
Merci.
Voici le script :
Je suis en train d'essayer de creer un scrip shell afin de créer la miniature d'une image jpg en fonction de sa date de création. Seulement pour la boulce for à la fin du script il y à un problème car l'éxecution s'arrête juste avant et entre apparament dans une boucle infini... Je ne vois pas qu'est ce qui coince ... quelqun pourrait m'aider ?
Merci.
Voici le script :
#! /bin/bash
# Test le nombre d'arguments
if (( $# !=2 ))
then
echo "Deux arguments requis"
exit 1
fi
echo "test arguments éfféctué..."
#Test si le fichier existe et si il est bien un répertoire
if ! test -d $1
then
echo "$1 : inexistant ou non conforme"
exit 2
fi
echo "test réportoire éfféctué..."
#Test le droit d'écriture
if ! test -w $1
then
echo "$1 : Ecriture non autorisée "
exit 3
fi
echo "test droit d'écriture éfféctué..."
#Test du nombre de caractères de la date
if (($(echo $2|wc -c) != 7))
then
echo "$2 : Date incorrecte !"
exit 4
fi
echo "test longueur date éfféctué..."
# Test du mois
if (($(echo $2 | cut -c3,4 ) > 12 )) || (( $(echo $2 | cut -c3,4 ) < 1))
then
echo "$2 : Mois invalide"
exit 4
fi
echo "test du mois éfféctué.."
# Test du jour
if (($(echo $2 | cut -c5,6 ) > 31 )) || (( $(echo $2 | cut -c5,6 ) < 1))
then
echo "$2 : Jour invalide"
exit 4
fi
echo "test du jour éfféctué..."
# Création dossier miniature
cd $1
if ! test -d miniature
then
mkdir miniature
echo "Dossier miniature créer dans le dossier $1."
fi
echo "Création du dossier miniature éfféctué..."
# Conversion des images avec les dates superieur à l'argument $2
cd ..
date=$(date -d $2 +%s)
mini=$(cut -f1 -d.)
datef=$(stat -c %Y $1/$file)
for file in $(ls $1 | grep .[Jj][Pp][Gg])
do
if (($date < $datef))
then
convert $1/$file -thumbnail '100x100' $1/miniature/$mini.png
echo "Création de l'imagette de $1/$file"
else
echo "$1/$file : Date de l'image trop ancienne."
fi
done
echo "conversion éfféctué..."
exit 0
1 réponse
-
ContributeurSalut,
Dans la dernière partie de ton script il y a plusieurs incohérences ;-((
La définition des variables "$mini" et "$datef" ont lieu avant même la boucle et la définition de la variable "$file", de plus la variable "$mini" est incomplète, il manque le fichier ($file) de référence ;-((
# Conversion des images avec les dates superieur à l'argument $2 cd .. date=$(date -d $2 +%s) for file in $(ls $1 | grep .[Jj][Pp][Gg]) do mini=$(cut -f1 -d. <<<$file) datef=$(stat -c %Y $1/$file) if (($date < $datef)) then convert $1/$file -thumbnail '100x100' $1/miniature/$mini.png echo "Création de l'imagette de $1/$file" else echo "$1/$file : Date de l'image trop ancienne." fi done