Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/09/2018, à 17:01

visual1956

[RESOLU]problème de blanc dans le chemin d'un fichier

bonjour
dans le cadre de mon entrainement au shell j'essaye de développer un script de transfert de photos
dans mon code j'alimente un tableau result de l'adresse des fichiers issus d'une commande find
lorsque je demande un echo sur la première valeur du tableau  le chemin retourné est bien complet et intègre les blancs


lorsque j'envoie cette valeur à une fonction destinée àretourner les métadonnées, j'ai une message d'erreur m'indiquant que le fichier n'est pas trouvé ce qui est normal car ce chemin est tronqué au premier blanc
j'ai mis des "" autour de ma variable mais cela ne fait rien
pourquelle raison le fait de passer la valeur du tableau à une fonction entraiine la coupure du chemin au premier blanc

#! /bin/bash
OLDIFS="$IFS"

# créationdu tableau associatif permettant de réger le nombre de copie d'une même image 
# le principe repose sur le nom de la photo 
# la clé est le nom de la photo "Name" et la valeur  est ne nombre d'exemplaire de la photo 

 declare -A tbPhotos

recherche_fichiers()

{
unset result index
    while IFS= read -r -u3 -d $'\0' file; do
     result[index++]="$file"
     done 3< <(find $dossierSource -type f -iname "*png" -print0)
     echo ${result[0]}
       echo ${result[1]}
     echo ${result[@]}
}

recherche_MetaDonnees()
# cette fonction recherche la présence de métadonnées elle  alimente le tableau des transferts
# que dans le cas ou les quatre métadonnées existent

 
{
unset fichier modele marque dateInitiale  nom

fichier=$1
echo $?
echo $fichier
marque=$( exiftool -Make  $fichier)
[[ $? -eq 1 ]] && exit

modele=$(exiftool -Model $fichier)
dateInitiale=$(exiftool -DateTimeOriginal $fichier)
nom=$(exiftool  -FileName    $fichier)
echo $marque $modele   $dateInitiale  $nom
}

dossierSource=$(zenity --file-selection  --directory --title="Sélectionnez le dossier source" --filename="/home/$USER/*")
# Si Annuler
[[ $? -eq 1 ]] && exit
dossierDestination=$(zenity --file-selection --directory --title="Sélectionnez le dossier de destination" --filename="/home/$USER/*")
# Si Annuler
[[ $? -eq 1 ]] && exit
echo  "dossier source =  $dossierSource"
echo "dossier destination = $dossierDestination"
#recherche des photos
recherche_fichiers  $dossierSource
echo "le nombre total de photos trouvées avec métadonnées est de : ${#result[@]}"
echo ${result[0]}
recherche_MetaDonnees  " ${result[0]}"

#IFS="$OLDIFS"
michel@salon:~/Documents/Scripts$ ./image.sh
Gtk-Message: 17:36:03.791: GtkDialog mapped without a transient parent. This is discouraged.
Gtk-Message: 17:36:08.671: GtkDialog mapped without a transient parent. This is discouraged.
dossier source =  /home/michel/Images
dossier destination = /home/michel/Images
/home/michel/Images/Capture d’écran de 2018-09-11 15-48-13.png
/home/michel/Images/Capture d’écran de 2018-09-11 10-43-07.png
/home/michel/Images/Capture d’écran de 2018-09-11 15-48-13.png /home/michel/Images/Capture d’écran de 2018-09-11 10-43-07.png /home/michel/Images/Capture d’écran de 2018-08-31 17-51-54.png /home/michel/Images/copie écran paiement LR IÀD.png /home/michel/Images/Capture d’écran de 2018-09-11 15-48-12 - 1.png /home/michel/Images/Capture d’écran de 2018-09-11 15-48-12.png /home/michel/Images/1 LUNE DU 31 JUIILLET.png
le nombre total de photos trouvées avec métadonnées est de : 7
/home/michel/Images/Capture d’écran de 2018-09-11 15-48-13.png
0
/home/michel/Images/Capture d’écran de 2018-09-11 15-48-13.png
Error: File not found - /home/michel/Images/Capture
Error: File not found - d’écran
Error: File not found - de
Error: File not found - 2018-09-11
Error: File not found - 15-48-13.png
michel@salon:~/Documents/Scripts$ 

Dernière modification par visual1956 (Le 12/09/2018, à 12:13)

Hors ligne

#2 Le 11/09/2018, à 17:37

Postmortem

Re : [RESOLU]problème de blanc dans le chemin d'un fichier

Bonjour,

Une règle à appliquer : on protège TOUJOURS l'utilisation des variables avec des guillemets sauf quand on sait pourquoi on ne le fait pas !

Par exemple, il faut faire :

modele=$(exiftool -Model "$fichier")

Et non pas :

modele=$(exiftool -Model $fichier)

Et un autre exemple avec juste echo :

$ t='a               b'

$ echo $t
a b

$ echo "$t"
a               b

Dernière modification par Postmortem (Le 11/09/2018, à 17:39)


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#3 Le 12/09/2018, à 10:25

visual1956

Re : [RESOLU]problème de blanc dans le chemin d'un fichier

Bonjour Postmortem
je viens de suivre tes conseils et voici mon programme actualisé

modele=$(exiftool -Model "$fichier")
dateInitiale=$(exiftool -DateTimeOriginal "$fichier")
nom=$(exiftool  -FileName    "$fichier")
echo $marque $modele   $dateInitiale  $nom
}

dossierSource=$(zenity --file-selection  --directory --title="Sélectionnez le dossier source" --filename="/home/$USER/*")
# Si Annuler
[[ $? -eq 1 ]] && exit
dossierDestination=$(zenity --file-selection --directory --title="Sélectionnez le dossier de destination" --filename="/home/$USER/*")
# Si Annuler
[[ $? -eq 1 ]] && exit
echo  "dossier source =  $dossierSource"
echo "dossier destination = $dossierDestination"
#recherche des photos
recherche_fichiers  $dossierSource
echo "le nombre total de photos trouvées avec métadonnées est de : ${#result[@]}"
echo ${result[0]}
recherche_MetaDonnees  " ${result[0]}"

                                                       

lorsque je lance le programme le chemin des photos s'affiche bien mais j'ai un message d'erreur qui m'indique que le fichier n'est pas trouvé

michel@salon:~/Documents/Scripts$ ./image.sh
Gtk-Message: 11:22:40.080: GtkDialog mapped without a transient parent. This is discouraged.
Gtk-Message: 11:22:45.093: GtkDialog mapped without a transient parent. This is discouraged.
dossier source =  /home/michel/Images
dossier destination = /home/michel/Images
/home/michel/Images/Capture d’écran de 2018-09-11 15-48-13.png
/home/michel/Images/Capture d’écran de 2018-09-11 10-43-07.png
/home/michel/Images/Capture d’écran de 2018-09-11 15-48-13.png /home/michel/Images/Capture d’écran de 2018-09-11 10-43-07.png /home/michel/Images/Capture d’écran de 2018-08-31 17-51-54.png /home/michel/Images/copie écran paiement LR IÀD.png /home/michel/Images/Capture d’écran de 2018-09-11 15-48-12 - 1.png /home/michel/Images/Capture d’écran de 2018-09-11 15-48-12.png /home/michel/Images/1 LUNE DU 31 JUIILLET.png /home/michel/Images/OUI GOLFE HYERES.png
le nombre total de photos trouvées avec métadonnées est de : 8
/home/michel/Images/Capture d’écran de 2018-09-11 15-48-13.png
0
 /home/michel/Images/Capture d’écran de 2018-09-11 15-48-13.png
Error: File not found -  /home/michel/Images/Capture d’écran de 2018-09-11 15-48-13.png
michel@salon:~/Documents/Scripts$ 

pourtant le chemin semble correct

As tu une explication SVP ?
pAR AVANCE MERCI

Hors ligne

#4 Le 12/09/2018, à 10:44

pingouinux

Re : [RESOLU]problème de blanc dans le chemin d'un fichier

Bonjour,
Peut-être à cause de l'espace après le premier ".

recherche_MetaDonnees  " ${result[0]}"

Hors ligne

#5 Le 12/09/2018, à 12:13

visual1956

Re : [RESOLU]problème de blanc dans le chemin d'un fichier

bonjour pingouinux
tu avais raison
la programmation shell demande une extrême rigueur il va falloir que je me discipline
encore merci
bien que je pense être de retour rapidement avec une autre question

Hors ligne