Script Shell [Défau]
Résolu
Mirzo
-
Mirzo Messages postés 83 Statut Membre -
Mirzo Messages postés 83 Statut Membre -
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
A voir également:
- Script Shell [Défau]
- Classic shell - Télécharger - Personnalisation
- Script vidéo youtube - Guide
- Ghost script - Télécharger - Polices de caractères
- Mas script - Accueil - Windows
- Script cmd - Guide
1 réponse
Salut,
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 ;-((
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
Tout marche bien maintenant.
convert $1/$file -thumbnail '100x100' $1/miniature/${file%.*}.png