Ich versuche etwas Einfaches zu tun, bin mir aber nicht sicher, wie ich mein Ziel hier erreichen soll.
Ich versuche, die Werte USER, TTY und FROM zu extrahieren, die vom w
Befehl auf der Konsole angegeben werden. In bash versuche ich, diese Ausgabe zu übernehmen und diese Werte in ein mehrdimensionales Array (oder nur ein Array mit einem Leerzeichen) zu übertragen.
#!/bin/bash
w|awk '{if(NR > 2) print $1,$2,$3}' | while read line
do
USERS+=("$line")
echo ${#USERS[@]}
done
echo ${#USERS[@]}
Ich habe den Weg gefunden, die Werte zeilenweise in einem einzelnen Array einzulesen, aber ich kann den USERS-Array-Wert scheinbar nicht aus dem Bereich der while-Schleife herausholen. Es gibt die Werte 1,2,3,4 und dann 0 nach der Schleife aus. Jedes Beispiel, das ich lese, verwendet die Variable außerhalb des Gültigkeitsbereichs vollkommen in Ordnung, aber ich kann es nicht scheinen.
while read col1 col2 col3 _; do ...; done < <(w)