logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 19-12-2020 18:46:03

Haricophile
Adhérent(e)
Lieu : Pignans (Var)
Distrib. : SID
Noyau : 4.0.0-1-amd64
(G)UI : Mate / i3 selon...
Inscription : 14-09-2009

bash et mapfile (extension du Bash)

Je transmets au cas où ça en intéresserait certains :


Tournée de shell:

Vous connaissez ces petits bouts de code qui interceptent et étendent
les fonctionnalités logicielles, comme les HTML5shim pour ajouter les
balises manquantes aux navigateurs anciens.

Je viens de faire la même chose pour étendre la commande mapfile dans
les scripts bash.

Originellement, la commande interne à Bash "mapfile" permet de lire un
fichier dans un tableau indexé numériquement. Mais quant on a besoin de
lire des paires de clé valeur comme en provenance d'un fichier d’options
ou d’une extraction d’objet JSON, pour le moment mapfile n’est pas
capable de le faire. Ça pourrait changer dans une future version de Bash
car mon idée a été accueillie très positivement par le principal
mainteneur actuel de Bash, l’éminent Chet Ramey.

Ceci-dit, si on tient compte de la célérité gastéropodique avec laquelle
les nouvelles versions de Bash sont introduites sur les différents
systèmes, ça deviendra une fonctionnalité sur laquelle on peut compter,
d’ici une quinzaine d’années avec de la chance.

Donc en attendant, ce shim pour bash ajoutera cette fonctionnalité à
mapfile, si elle n’y est pas déjà:

https://gist.github.com/leagris/0cb299f … 6bf2bb5235

--
Léa Gris


« Un optimiste n’est pas un être satisfait, content de la situation actuelle. C’est quelqu’un qui pense qu’il peut faire quelque chose qui servira. » (Raymond Aubrac)

Hors ligne

#2 18-09-2022 16:55:29

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : bash et mapfile (extension du Bash)

Hello,

Intéressant en effet smile

Edit:
Je dirais même plus, essayé et adopté tongue

Exemple (après avoir "sourcé" le script) :

$ cat fic
a=a 1
b="b 2"
c="c3"
$
$ IFS="=" mapfile -A T < fic
$
$ for ind in ${!T[@]}; do echo "T[$ind]=${T[$ind]}"; done
T[c]="c3"
T[b]="b 2"
T[a]=a 1
$

Dernière modification par Tawal (18-09-2022 17:48:09)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

Pied de page des forums