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 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

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 lol

#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 tongue


"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

nicolas66 a écrit :

Et `n'exike' n'existe pas non plus tongue

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

Didouuuuuu a écrit :
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 lol

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