Dateiinhalt in einem Array speichern! (Shell)
Banana
- programmiertechnik
Hallo Zusammen,
ich bin ziemlich neu in der ganzen Unix und Shell-Materie!(BASH_VERSION=$'2.05.0(1)-release')
Ich würde gerne den Inhalt einer Textdatei (durch Leerzeichen getrennt) in einem Array Wort für Wort abspeichern!
Ich habe aber leider bis jetzt nur herausgefunden, wie ich ein Array "manuell" mit Daten füllen kann, aber das bringt mich ja leider nicht wirklich weiter.
Könnt ihr mir vielleicht bei meinem Problem weiterhelfen?
Vielen Dank!
Gruß Banana
Hellihello
Ich würde gerne den Inhalt einer Textdatei (durch Leerzeichen getrennt) in einem Array Wort für Wort abspeichern!
Ich habe aber leider bis jetzt nur herausgefunden, wie ich ein Array "manuell" mit Daten füllen kann, aber das bringt mich ja leider nicht wirklich weiter.
Könnt ihr mir vielleicht bei meinem Problem weiterhelfen?
PHP kennt ja explode();
Was für ein Array denn und was willst du dann damit? Array in der bash?
Dank und Gruß,
Hallo Robert,
Was für ein Array denn und was willst du dann damit? Array in der bash?
die bash gabs schon lange vor PHP :-)
Natürlich hat die bash auch Arrays, dazu hab' ich mal was gepostet [1]
Viele Mechanismen, die in $programmiersprache zig Zeilen Code benötigen, lassen sich in der Shell mit einem Einzeiler erledigen, siehe z.B: https://forum.selfhtml.org/?t=168211&m=1097577, Umbenennen von Dateien in einer Verzeichnishierarchie.
Freundliche Grüße
Vinzenz
[1] Dank an Florian, der mir die Archivsuche erspart hat.
danke für die vielen Antworten!
Ich habe das jetzt folgendermaßen hinbekommen:
Ich speichere den Inhalt der Textdatei zunächst in eine Variable und diese Variable verwende ich später um das Array zu füllen.
Wenn ich diesen Code:
array=($inhalt);
in die KOnsole eingebe, dann wird mir der Inhalt der Variable in das Array reingespeichert, genau so wie ich es haben wollte.
Wenn ich jedoch diese Zeile in mein Shell-Skript reinschreibe und dann dieses ausführe bekomme ich folgende Fehlermeldung:
"TimeBand.sh: syntax error at line 19: `array2=' unexpected"
Ich dachte immer ich könnte in das Shell-Skript die Befehle so hineinschreiben, wie ich sie auch in die Konsole eintippen würde bis jetzt hatte das auch immer prima geklappt.
Was mache ich denn falsch?
Gruß Banana
Hallo Banana,
Ich speichere den Inhalt der Textdatei zunächst in eine Variable und diese Variable verwende ich später um das Array zu füllen.
warum liest Du den Inhalt nicht gleich in ein Array ein?
Wenn ich diesen Code:
array=($inhalt);
in die KOnsole eingebe, dann wird mir der Inhalt der Variable in das Array reingespeichert, genau so wie ich es haben wollte.
Was mache ich denn falsch?
Du enthältst uns Dein Shellskript vor. Hellsehen kann ich leider nicht.
Wenn Deine Datei die Daten allesamt in einer Zeile hat (warum eigentlich?), dann kannst Du wie folgt vorgehen:
#---------------------------------------------------
#---------------------------------------------------
Alpha Beta Gamma Delta
#---------------------------------------------------
#---------------------------------------------------
#!/bin/bash
declare -a liste # Lege eine eine Arrayvariable an
# < /path/to/file (durch den korrekten Pfad zur Datendatei ersetzen :-))
read -a liste < /path/to/file #
Diese Zeile ist eigentlich alles,
# was Du benötigst
for i in ${liste[*]}; # Durchlaufe alle Arrayelemente
do
echo $i; # und gebe sie zeilenweise aus
done
#---------------------------------------------------
#---------------------------------------------------
Alpha
Beta
Gamma
Delta
Freundliche Grüße
Vinzenz
Hellihello Vinzenz,
die bash gabs schon lange vor PHP :-)
Natürlich hat die bash auch Arrays, dazu hab' ich mal was gepostet [1]
Ich weiß, aber ich PHP kann ich mehr als bash:
Viele Mechanismen, die in $programmiersprache zig Zeilen Code benötigen, lassen sich in der Shell mit einem Einzeiler erledigen, siehe z.B: http://forum.de.selfhtml.org/my/?t=168211&m=1097577, Umbenennen von Dateien in einer Verzeichnishierarchie.
$file_as_array = explode(" ",file_get_contents("filename"));
oder so ähnlich. Ich dachte auch, "explode" könne bei der etwaigen Suche helfen.
Dank und Gruß,
Robert aka
Hallo Robert,
$file_as_array = explode(" ",file_get_contents("filename"));
>
> oder so ähnlich. Ich dachte auch, "explode" könne bei der etwaigen Suche helfen.
naja, ich finde explode() eigentlich unmöglich. Das heißt anderswo split ...
Freundliche Grüße
Vinzenz
Hallo Vinzenz.
[1] Dank an Florian, der mir die Archivsuche erspart hat.
Google war sehr hilfsbereit. ;)
Servus,
Flo
Hallo Banana.
Dieser Archiv-Thread schaut ganz brauchbar aus.
Die Frage ist aber auch, was du eigentlich erreichen willst; vielleicht benötigt man dazu ja gar kein Array?
Servus,
Flo