Siduction Forum

Siduction Forum => Free Speech => Topic started by: bluelupo on 2017/02/11, 20:01:54

Title: Assoziative Arrays in einem Shellscript
Post by: bluelupo on 2017/02/11, 20:01:54
Hallo Community,
ich würde gerne die nachfolgende Ausgabe (df) in ein assoziatives Array einlesen und wieder ausgeben.

Mit diesem Befehl werden Werte erzeugt:
Code: [Select]
df -ahT -t ext4 | awk '{print $1,$4,$7}' | egrep ^\/.*VGsys

Ausgabe an meinem Rechner (4 Datensätze a 3 Werte:
Code: [Select]
/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.

Code: [Select]
#!/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:
Code: [Select]
/dev/mapper/VGsys-LVhome 4,2G /home

Was mache hier falsch bzw. wo habe ich den Denkfehler?
Title: Re: Assoziative Arrays in einem Shellscript
Post by: musca on 2017/02/19, 21:26:36
Hallo bluelupo,

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

Grüße
musca