Assoziative Arrays in einem Shellscript

Started by bluelupo, 2017/02/11, 20:01:54

Previous topic - Next topic

bluelupo

Hallo Community,
ich würde gerne die nachfolgende Ausgabe (df) in ein assoziatives Array einlesen und wieder ausgeben.

Mit diesem Befehl werden Werte erzeugt:

df -ahT -t ext4 | awk '{print $1,$4,$7}' | egrep ^\/.*VGsys


Ausgabe an meinem Rechner (4 Datensätze a 3 Werte:

/dev/mapper/VGsys-LVroot 7,6G /
/dev/mapper/VGsys-LVvmfast 29G /mnt/vm/fast
/dev/mapper/VGsys-LVvar 3,1G /var
/dev/mapper/VGsys-LVhome 4,2G /home


Mit dem nachfolgenden Versuch des Scripts bekomme ich aber nur die Ausgabe des letzen Datensatzes.


#!/bin/bash

declare -A DISKFREE

while read -r fs ben mp;
   do
   DISKFREE[filesystem]=$fs
   DISKFREE[benutzt]=$ben
   DISKFREE[mountpunkt]=$mp
done < <(df -ahT -t ext4 | awk '{print $1,$4,$7}' | egrep ^\/.*VGsys)

echo "${DISKFREE[@]}"


Ausgabe:

/dev/mapper/VGsys-LVhome 4,2G /home


Was mache hier falsch bzw. wo habe ich den Denkfehler?

musca

Hallo bluelupo,

Du überschreibst in der Schleife die Werte, da sich filesystem, benutzt und mountpunkt nicht ändern.

Grüße
musca
,,Es irrt der Mensch, solang er strebt."  (Goethe, Faust)