Welcome, Guest. Please login or register.
Did you miss your activation email?

Author Topic: [DE] Assoziative Arrays in einem Shellscript  (Read 2551 times)

Offline bluelupo

  • User
  • Posts: 2.068
    • BluelupoMe
[DE] Assoziative Arrays in einem Shellscript
« 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?

Offline musca

  • User
  • Posts: 725
  • sid, fly high!
Re: Assoziative Arrays in einem Shellscript
« Reply #1 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
„Es irrt der Mensch, solang er strebt.“  (Goethe, Faust)