ls in array

Antworten
Nachricht
Autor
ottto
Beiträge: 176
Registriert: 09. Sep 2004 15:00

ls in array

#1 Beitrag von ottto » 20. Aug 2007 14:43

Hallo,
ich möchte in einem Shell-Script ein array mit der Ausgabe eines Kommandos füllen.
Wie bekomme ich z.B. die Dateinamen "ls" in ein Array oder eine Variable????

Danke.
ottto

Benutzeravatar
Janka
Beiträge: 3585
Registriert: 11. Feb 2006 19:10

#2 Beitrag von Janka » 21. Aug 2007 10:40

Was willst du erreichen? Ich frage das, weil es in Shellscripts üblicherweise die komplizierteste Methode ist, erstmal alle Daten in Variablen zu speichern, und dann daraufhin irgendetwas zu tun.

Das hängt damit zusammen, dass man zum Parsen der Ausgabe eines Kommandos üblicherweise eine Pipeline verwenden muss, und damit das zurechtgemachte Ergebnis schlecht wieder zurück in den die Pipeline aufrufenden Shellprozess bekommt.

Deshalb ist es günstiger, die bezweckten Aktionen gleich in der Pipeline zu machen.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

ottto
Beiträge: 176
Registriert: 09. Sep 2004 15:00

#3 Beitrag von ottto » 23. Aug 2007 9:28

Hallo Janka,
vielen Dank für die Antwort.
An dem Rechner hängt ein Bandwechsler zur Datensicherung mit spezieller Software.
Ich bekomme mit einem Befehl eine Liste von entsprechenden Bandnamen angezeigt.
Jetzt muss mit jedem Bandnamen der gleiche Befehl abgesetzt werden.


Lösung:
die Ausgabe wird in eine /tmp/Datei geschrieben. Im nächsten Schritt wird dann die Datei zeilenweise in einer for-Schleife gelesen und der Befehl zusammengesetz. Funktioniert.

Schellscriptneuling ottto

Benutzeravatar
Janka
Beiträge: 3585
Registriert: 11. Feb 2006 19:10

#4 Beitrag von Janka » 23. Aug 2007 13:28

Code: Alles auswählen

gibmirdieliste | while read BAND
do
  echo "Dies ist der Befehl für Band $BAND"
done
Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

ottto
Beiträge: 176
Registriert: 09. Sep 2004 15:00

#5 Beitrag von ottto » 23. Aug 2007 14:33

Hallo Janka,
bin begeistert von Deiner Lösung.

Danke.
ottto

Antworten