#1 Le 28/10/2008, à 19:16
- Syrion
Bash : Récupérer plusieurs lignes d'un fichier dans une variable
Bonjour,
je suis en train de faire une petit script nautilus pour donner à toutes les photos sélectionnées dans nautilus (ainsi que celle des dossiers sélectionné) comme date de modification la date de prise de vue (qui se trouve dans les données EXIF).
exiv2 permettant de le faire, il suffit de lui donner la liste des fichiers en argument.
Mon script crée donc une liste de fichiers à partir de fichiers et de dossiers (les dossiers viennent ajouter les fichiers qu'ils contiennent dans la liste des fichiers).
Sauf qu'à un moment, je veux faire un grep sur une belle variable qui contient tous les fichiers listés, 1 par ligne.
1) comment remettre la sortie du grep dans une variable en conservant les caractères newline ?
2) comment mettre le contenu d'un fichier qui contient plusieurs lignes dans une variable, en conservant les lignes ?
pour faire ces choses là, j'ai essayé
maVariable=
echo "$fileList" | grep -E -i '.jpe?g' | while read filePath
do
maVariable="$maVariable"$'\n'"$filePath"
done
#maVariable est toujours vide !
mais malheureusement maVariable à l'intérieur du do...done n'est pas celle qui est avant le echo. Autrement dit, dans le while je ne vois pas les variables globales. Pourquoi ? Comment faire pour que les processus fils d'un shell voient les variables globales de ce shell ?
merci pour votre aide, je suis rouillé en shell...
Dernière modification par Syrion (Le 28/10/2008, à 19:17)
Ubuntu 24.04.4 amd64 sur Dell XPS 7590 15"
Ubuntu Server 24.04.4 Eeepc 1215P
Ubuntu 24.10 sur Ryzen 5 5600X, 32Go DDR4-3600, NVidia RTX 3060Ti
Hors ligne
#2 Le 28/10/2008, à 19:29
- Didouuuuuuu
Re : Bash : Récupérer plusieurs lignes d'un fichier dans une variable
Il faut faire :
export maVariable
Sinon, si je ne m'abuse :
maVariable = `aecho "$fileList" | grep -E -i '.jpe?g`
devrait repondre à ton souhait.
#3 Le 28/10/2008, à 19:31
- Didouuuuuu
Re : Bash : Récupérer plusieurs lignes d'un fichier dans une variable
Il faut faire :
export maVariable
Sinon, si je ne m'abuse :
maVariable = `aecho "$fileList" | grep -E -i '.jpe?g`
devrait repondre à ton souhait.
Corriger :
maVariable = `echo "$fileList" | grep -E -i '.jpe?g`
la commande aecho n'exike pas
#4 Le 28/10/2008, à 20:57
- nicolas66
Re : Bash : Récupérer plusieurs lignes d'un fichier dans une variable
Et `n'exike' n'existe pas non plus
"The computer was born to solve problems that did not exist before." (B. Gates)
Hors ligne
#5 Le 28/10/2008, à 21:10
- MrWaloo
Re : Bash : Récupérer plusieurs lignes d'un fichier dans une variable
Et `n'exike' n'existe pas non plus
Ce n'est pas de la moquerie Didouuuuuu, mais je suis sur le post qui m'a fait le plus rire depuis que je suis sur ce forum. je tenais à le faire savoir.
sinon pour ton affaire, en perl ce serait plus à ma portée mais là...
"De tous ceux qui n'ont rien à dire, les plus agréables sont ceux qui se taisent !!" (Desproges)
UNIX is an operating system, OS/2 is half an operating system, Windows is a shell, MS-DOS is a boot sector virus.
Hors ligne
#6 Le 28/10/2008, à 23:21
- Syrion
Re : Bash : Récupérer plusieurs lignes d'un fichier dans une variable
Didouuuuuuu a écrit :Il faut faire :
export maVariable
Sinon, si je ne m'abuse :
maVariable = `aecho "$fileList" | grep -E -i '.jpe?g`
devrait repondre à ton souhait.
Corriger :
maVariable = `echo "$fileList" | grep -E -i '.jpe?g`
la commande aecho n'exike pas
OK pour le code pour récupérer les lignes dans une variables. J'avais du essayer, mais en oubliant de mettre les guillements autour du echo de contrôle, ce qui m'a fait perdre les lignes.
Par contre, le export n'a pas fonctionné, j'y avait pensé : le do-done du while ne voyait toujours pas la variable exportée.
Dernière modification par Syrion (Le 28/10/2008, à 23:22)
Ubuntu 24.04.4 amd64 sur Dell XPS 7590 15"
Ubuntu Server 24.04.4 Eeepc 1215P
Ubuntu 24.10 sur Ryzen 5 5600X, 32Go DDR4-3600, NVidia RTX 3060Ti
Hors ligne