Script shell bash
Bonjour,
Voila un travail que j'ai a rendre demain , et je solicite votre aide :
Enoncé :
Et voila le script que j'ai deja fait :
Si quelqu'un peut me le corriger , et me dire se que je peux ajouter se serais simpas , merci d'avances pour votre aide .
Voila un travail que j'ai a rendre demain , et je solicite votre aide :
Enoncé :
Utilitaire de création d'images miniatures 1. Travail à faire Ecrire un script-shell référencé imagette qui admet en argument : * un nom de répertoire * une date au format aammjj et qui créé, pour chaque image au format « point jpg » contenue dans le répertoire passé en argument et dont la date de dernière modification est postérieure à celle passée en second argument, une imagette (thumbnail) au format « point png » et de taille lOOx 100 pixels. Ces imagettes sont placées dans un nouveau répertoire référencé miniatures et créé dans le répertoire passé en premier argument. 4. Contraintes On programmera dans « l'esprit Unix ». On n'oubliera donc pas de tester : -Le nombre d'argument -L'existence et le type du fichier passé en argument -L'autorisation du droit d'écriture sur ce répertoire (pour permettre la création du sous répertoire miniatures) - Le format correct de la date passée en argument Le code de retour renvoyé sera : - égal à 1 en cas de problème d'argument -égal à 2 en cas de problème d'existence ou de type du fichier passé en argument -égal à 3 en cas de problème de droit d'écriture -égal à 4 en cas de problème de format de date conforme à l'esprit Unix si tout va bien
Et voila le script que j'ai deja fait :
#!/bin/bash # test nombres d'arguments if ! (( "$#" == 2 )) then echo "Nombres d'arguments invalide" exit 1 fi # séparer date echo $2 jour=$(echo $2 | cut -c5,6) mois=$(echo $2 | cut -c3,4) annee=$(echo $2 | cut -c1,2) # Verification date if (($mois>12 || $mois<=0)) then echo "format non valide" exit 4 else echo "ok" fi if (($jour>31 || $jour<=0)) then echo "format non valide" exit 4 else echo "ok" fi # Derniere modification for all in $1 if then do echo "$(stat -c %X )" done exit 0 done else exit 0 # Vérifier droits répertoire if test -d $1 && test -w $1 then echo "$1 droits ok" else echo "$1 droits non ok" exit 3 fi for $1 in 'ls *.jpg *.jpeg *.JPEG' do convert ( ls $1 ) -thumbnail '100x100>' miniatures/$image done
Si quelqu'un peut me le corriger , et me dire se que je peux ajouter se serais simpas , merci d'avances pour votre aide .
A voir également:
- Script shell bash
- Classic shell - Télécharger - Personnalisation
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Bingo bash - Télécharger - Divers Jeux
1 réponse
Il y a de grosses erreurs de syntaxe bash, je pense que tu devrais t'empresser, au choix et selon tes préférences :
- d'installer linux en dual boot (si tu es sous windows)
- d'installer cygwin
- d'installer un logiciel comme virtualbox dans lequel tu installeras linux
Ainsi tu pourras tester ton script.
Il y a notamment des erreurs syntaxiques :
Il y également des erreurs algorithmiques. Par exemple : "for all in $1" signifie parcourt chaque mot du premier argument. En conséquence, la variable all va prendre la valeur du premier argument passé au script et la boucle for aura fini ses itérations.
Ce serait plutôt :
Enfin on ne peut pas sous entendre les début et fin de bloque (fi, do ... done) etc...
Je te conseille d'écrire ton test petit à petit. Tu peux utiliser l'instruction echo pour afficher le contenu d'une variable et voir où passe ton script.
Bon courage
- d'installer linux en dual boot (si tu es sous windows)
- d'installer cygwin
- d'installer un logiciel comme virtualbox dans lequel tu installeras linux
Ainsi tu pourras tester ton script.
Il y a notamment des erreurs syntaxiques :
if [ test ] ; then ... fi
Il y également des erreurs algorithmiques. Par exemple : "for all in $1" signifie parcourt chaque mot du premier argument. En conséquence, la variable all va prendre la valeur du premier argument passé au script et la boucle for aura fini ses itérations.
Ce serait plutôt :
for fichier in $(ls -1 $1/*.png) do ... done
Enfin on ne peut pas sous entendre les début et fin de bloque (fi, do ... done) etc...
Je te conseille d'écrire ton test petit à petit. Tu peux utiliser l'instruction echo pour afficher le contenu d'une variable et voir où passe ton script.
Bon courage