Benutzer-Werkzeuge

Webseiten-Werkzeuge


edv:os:unix:shell:example:textfile_im_skript_bearbeiten

Textfile im Skript bearbeiten

Hier ist eine mögliche Lösung, daß eine Datei in den Speicher gelesen wird und die eigentliche Arbeit dann auf diesem Speicher erfolgt.

function readfile()
{
	local File=$1
	local SaveTo=$2
	local -i counter=0
	while read line; do
		eval "$2[$counter]"=\'$line\'
		counter=$(($counter+1))
	done < $File
	eval "$3"=$counter
}

Die Funktion readfile() wird mit dem Dateinamen als ersten und der Variable, die die Datei aufnehmen soll als zweitem Parameter gerufen. Als Rückgabewert liefert sie im dritten Argument die Anzahl gelesener Zeilen. Dies ist wichtig, da zu einer Feldvariablen nicht entschieden werden kann, wie viele Elemente sie enthält.

Auf die einzelnen Zeilen der Datei können Sie nun mittels Variable[Zeilenummer] zugreifen und irgendwann, wenn die Bearbeitung abgeschlossen ist, möchten Sie die Daten auch wieder zurück schreiben. Hierzu verhilft Ihnen die Funktion writefile(), die als Argumente die Variable mit den Zeilen sowie die Anzahl der Zeilen übergeben bekommt:

function writefile()
{
	local Array=$1
	for ((i=0; i<${!2}; i++)); do
		eval echo "\${$Array[$i]}"
	done
}

Angenommen, obige Funktionen stünden in einer Datei mit dem Namen filehandling.sh, dann könnte in einem Programm so vorgegangen werden:

#!/bin/sh
# Laden der "Bibliotheksdatei"
. filehandling.sh
 
# Datei einlesen
readfile zu_bearbeitende_Datei FeldVariable Anzahl
 
# Inhalt bearbeiten
for ((i=0; i<$Anzahl; i++)); do
	# Bearbeiten von FeldVariable[$i]...
done
 
# Datei schreiben
writefile FeldVariable Anzahl > zu_bearbeitende_Datei

Quelle: LinWiki, zu finden unter http://www.de.linwiki.org/wiki/Linuxfibel_-_Shells_-_Bashprogrammierung


Stand: 05.11.2009

EOF

edv/os/unix/shell/example/textfile_im_skript_bearbeiten.txt · Zuletzt geändert: 2020/01/11 01:23 von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki