while [[ -n “$1” ]]; do
if [[ -f “$1” ]]; then
jhead -autorot "$1"
elif [[ -d “$1” ]]; then #iname – case insensitive
find “$1” -iname “*.jpg” -exec jhead -autorot {} ;
fi
shift
done
zenity --info --title=“Traitement” --text=“Terminé !!!..”[/code]
[code]#!/bin/bash -x
title=“Choisissez la résolution d’image souhaité’“
imgsize=zenity --title "$title" --list --separator=" " --column="size" "160x120" "320x240" "640x480" "800x600" "1024x768" "1920x1080" "1900x1600"
if [ “$?” != 0 ] ; then
exit
fi #user have to select target size
#imgsize=echo $imgsize | sed 's/ max//g'
imgsize=$ {imgsize/ max/}
if [ ! “$imgsize” ]; then
zenity --error --title=“error” --text=“select a target size"
exit
fi #To respect proportions
himgsize=$imgsize
#val1=echo "$imgsize" | awk -F'x' '{ print $1 }'
val1=”${imgsize##x*}“
imgsize=”${val1}x${val1}”
############################
echo “$JAUNE”“Les photos du répertoire courant : “$VERT” “$REPERTOIRE_SOURCE” “$NORMAL”, vont être redimenssionnées aux valeurs suivantes :”$VERT” “$imgsize”""$NORMAL"
for I in *
do echo “Redimensionnement de : “$VERT” $I”"$NORMAL"
convert -filter Cubic -resize $imgsize $I $I
done
echo "changement des noms de fichier en cour"
for i in *
do mv $i echo $i | tr [:upper:] [:lower:];done
zenity --info --title=“Traitement” --text=“Terminé !!!..”[/code]
fonctionne à merveille pour quelques images, mais de retour de vacances je me retrouve avec 8Go dans un dossier et là, il ne fonctionne pas.
Quelqu’un pourrait me le débugger ?
Merci.
[PS] En ajoutant -x au shebang je n’ai pas d’infos !!!
Euh y’a un truc qui me gêne là… Qu’est-ce que tu entends précisément par « je n’ai pas d’infos » ? -x doit t’afficher la liste des commandes exécutées, c’est pas des informations ça ?
Effectivement, mais je n’ai pas plus d’info que RIEN ![/quote]
Vu tes scripts ça devrait au moins afficher les premières lignes qui n’ont strictement rien à voir avec les fichiers traités :
[code]$ cat test
#!/bin/bash -x
echo test
$ ./test
echo test
test[/code]
Si ça n’affiche rien du tout c’est que tu fais quelque chose de travers, à toi de trouver quoi.
Effectivement, mais je n’ai pas plus d’info que RIEN ![/quote]
Vu tes scripts ça devrait au moins afficher les premières lignes qui n’ont strictement rien à voir avec les fichiers traités :
[code]$ cat test
#!/bin/bash -x
echo test
$ ./test
echo test
test[/code]
Si ça n’affiche rien du tout c’est que tu fais quelque chose de travers, à toi de trouver quoi.[/quote]
En ligne de commande j’ai ceci à la selection de tous les fichiers :
irena@lagache:~/Images/Photos/2012/CAP-2- NE PAS UTILISER$ sh autorotate.sh
autorotate.sh: 11: [[: not found
Tu ne lançais pas le script en ligne de commande et tu t’étonnais qu’il ne t’affiche aucun message ?
[quote=« chris38 »]irena@lagache:~/Images/Photos/2012/CAP-2- NE PAS UTILISER$ sh autorotate.sh
autorotate.sh: 11: [[: not found[/quote]
Bash te renvoie une erreur sur la ligne 11, dans le script que tu nous as donné la ligne 11 c’est « done » qui ne contient aucun [[.
Si tu nous donnais les scripts complets ça aiderait…
Autre chose : quand tu appelles ton script avec sh nomduscript il ignore le shebang, c’est normal. Ton script contient des [[ qui sont spécifiques à Bash, il faut donc soit le lancer avec bash nomduscript, soit le rendre exécutable et le lancer avec /chemin/vers/nomduscript.
[quote=« syam »][quote=« chris38 »]irena@lagache:~/Images/Photos/2012/CAP-2- NE PAS UTILISER$ sh autorotate.sh
autorotate.sh: 11: [[: not found[/quote]
Bash te renvoie une erreur sur la ligne 11, dans le script que tu nous as donné la ligne 11 c’est « done » qui ne contient aucun [[.
Si tu nous donnais les scripts complets ça aiderait…[/quote]
J’ai imaginé qu’il pointé sur le « done ». Une erreur qu’il trouve sur le while. Mais j’ai pas vérifié avant et comme je n’aime pas le while + shift et préfère le for…in, j’ai foncé peut être un peu vite.
En effet on a déjà eu ce genre de cas. Faudrait peut être éditer un certains nombre d’astuce à vérifier avant de venir chouiner ici (sans que ce soit une règles juste une recommandation).
[quote=“syam”]…
Bash te renvoie une erreur sur la ligne 11, dans le script que tu nous as donné la ligne 11 c’est “done” qui ne contient aucun [[.
Si tu nous donnais les scripts complets ça aiderait…
…[/quote]
Ils sont complets tels quels ! je les utilises comme cela depuis pas mal de temps maintenant. mais sur un certains nombres de fichiers ca fonctionne mais pas audelà.
C’est étrange, chez moi quand je lance le premier script à ta manière (sh nomduscript) ça me renvoie ça :
$ sh ./test
./test: 3: ./test: [[: not found
Tu comprends donc que j’aie tendance à en conclure que 8 lignes sont passées à la trappe.
Je vais essayer sur une Squeeze pour voir si ça fait une différence avec ma testing.
Edit : ok, au temps pour moi, sur Squeeze ça m’indique bien la ligne 11 aussi. Mes excuses.
Mais ça ne change rien à ma remarque précédente :
MisterFreez t’a également donné une possible solution.