ubuntuusers.de

dateiinhalt in array einlesen

Status: Gelöst | Ubuntu-Version: Server 14.04 (Trusty Tahr)
Antworten |

freshdomi

Anmeldungsdatum:
16. Juli 2015

Beiträge: 27

hey, ich möchte gerne den inhalt von dbname.txt in ein array einlesen jedoch weiß ich nicht recht wie ich das anstellen soll

hab es jetzt mit:

1
2
array[] < dbname.txt
array[]=($(cat dbname.txt))

versucht aber es gibt mir immer eine fehlermeldung aus. Kann mir jemand helfen?

Mooi

Anmeldungsdatum:
15. August 2014

Beiträge: 187

1
array=($(<dbname.txt))

TausB

Avatar von TausB

Anmeldungsdatum:
26. November 2009

Beiträge: 1570

Wohnort: Terra incognita

Hallo!

Hilfreich sind folgende (Wiki-)Artikel:

Kurz: Mit Hilfe von read kann eine Datei eingelesen werden.

Zu klären sind von Dir:

  • Sprichst Du überhaupt von einem bash-Skript?

  • Soll der Inhalt ..

    • komplett in eine "Array-Zelle"?

    • Satzweise in "Array-Zellen"?

    • Wortweise in "Array-Zellen"?

Bitte gib in Zukunft etwas mehr Kontext zu Deiner Frage (sonst ist das Antworten so mühsam)... 😛

freshdomi

(Themenstarter)

Anmeldungsdatum:
16. Juli 2015

Beiträge: 27

Danke jetzt wird schon mal alles eingelesen Aber wenn ich es in mein Script einbaue erstellt es trotzdem nur eine datei mid dem Namen der ersten Zeile von dbname.txt

1
2
3
4
5
array=($(<dbname.txt))                                                                                                                               
for wert in "$array"                                                                                                                                 
do                                                                                                                                                   
touch /home/user/$wert                                                                                                                               
done 

freshdomi

(Themenstarter)

Anmeldungsdatum:
16. Juli 2015

Beiträge: 27

Ja die beiden Links hab ich mir schon angesehen Also ich will aus der datei jede einzelne Zeile Wortweise in Arrays einlesen um sie später weiterverarbeiten zu können

Mooi

Anmeldungsdatum:
15. August 2014

Beiträge: 187

1
for wert in ${array[*]}

Eine Datei zeilenweise abarbeiten, kann man aber eleganter machen.

freshdomi

(Themenstarter)

Anmeldungsdatum:
16. Juli 2015

Beiträge: 27

Ok Danke jetzt funktioniert es wie es soll wie meinst du eleganter machen?

Mooi

Anmeldungsdatum:
15. August 2014

Beiträge: 187

Kommt drauf an, was Du willst. Im Moment arbeitest Du die komplette Datei wortweise ab, die Gliederung in Zeilen geht verloren. Das kann durchaus gewollt sein und ist dann gut so.

freshdomi

(Themenstarter)

Anmeldungsdatum:
16. Juli 2015

Beiträge: 27

Naja fürs erste bin ich heute fertig und werde m mo weitermachen mal sehen wie ich es dann noch eleganter gestallten kann. Nochmals Danka und schönes Wochenende

Mooi

Anmeldungsdatum:
15. August 2014

Beiträge: 187

Der Titel dieses Threads ist eigentlich Hinweis genug, aber ich weise trotzdem hin: Ein Array kann nicht endlos Groß sein, was dann auch für die Datei gilt. Ab einer gewissen Größe, die mir nicht genau bekannt ist, gibt es einen Fehler.

Auch Dir ein schönes Wochenende

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13209

Mooi schrieb:

1
for wert in ${array[*]}

Ich würde eher die Form verwenden, die immer funktioniert - auch, wenn in den Array-Werten Sonder- oder Leerzeichen sind:

1
for wert in "${array[@]}"

Eine Datei zeilenweise abarbeiten, kann man aber eleganter machen.

Ich denke auch, dass das Speichern einer kompletten Datei i.d.R. nicht wünschenswert ist. freshdomi müsste halt mal erklären, wie er die Daten verarbeiten will. Dann könnte man noch andere Lösungen vorschlagen.

Antworten |