PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : shell: datei auslesen bei vielen zeilen ?



strike
11-05-2004, 12:00
Hallo an euch alle,
ich bekomme meine schleife einfach nicht hien.
ich habe drei datein. in jeder datei sind unterschiedlich viele zeilen drin.
ich muss in einer schleife, diese zeilen auslesen. und jede zeile in eine variable speichern.
hat jemand von euch eine idee wie ich das unter shell hienbekomme?

ihr würdet mir sehr helfen


strike

peschmae
11-05-2004, 12:05
wie sehen die Dateien so aus die eingelesen werden sollen?

Und wie sollen die Variablen heissen (oder möchtest du das mit Arrays machen?)

MfG Peschmä

strike
11-05-2004, 12:09
hi
kann auch gerne ein Arrays sein. die daten sehen z.b. so aus

/ora_2/test/DBTEST33/system01.dbf
/ora_2/test/DBTEST33/undotbs01.dbf
/ora_2/test/DBTEST33/indx01.dbf
/ora_2/test/DBTEST33/tools01.dbf
/ora_2/test/DBTEST33/users01.dbf

so sehen die datein aus. nartülich in jeder datei andere datein.

peschmae
11-05-2004, 14:46
z.B. so


#!/bin/bash
# script-array.sh: Loads this script into an array.
# Inspired by an e-mail from Chris Martin (thanks!).

script_contents=( $(cat "$0") ) # Stores contents of this script ($0)
#+ in an array.

for element in $(seq 0 $((${#script_contents[@]} - 1)))
do # ${#script_contents[@]}
#+ gives number of elements in the array.
#
# Question:
# Why is seq 0 necessary?
# Try changing it to seq 1.
echo -n "${script_contents[$element]}"
# List each field of this script on a single line.
echo -n " -- " # Use " -- " as a field separator.
done

echo


von da (http://www.tldp.org/LDP/abs/html/arrays.html)

MfG Peschmä

strike
12-05-2004, 19:34
danke für den code. und besonders für deine bemühungen.
bis jetzt habe ich den code noch nicht so ganz verstanden habe :-)

das script speichert doch jetzt den ganzen inhalt einer datei in eine variable. wie würde ich das hien bekommen, das er jede zeile in ein array oder in eine variable speichert ?

mfg
strike

strike
13-05-2004, 05:54
Original geschrieben von peschmae
z.B. so


#!/bin/bash
# script-array.sh: Loads this script into an array.
# Inspired by an e-mail from Chris Martin (thanks!).

script_contents=( $(cat "$0") ) # Stores contents of this script ($0)
#+ in an array.

for element in $(seq 0 $((${#script_contents[@]} - 1)))
do # ${#script_contents[@]}
#+ gives number of elements in the array.
#
# Question:
# Why is seq 0 necessary?
# Try changing it to seq 1.
echo -n "${script_contents[$element]}"
# List each field of this script on a single line.
echo -n " -- " # Use " -- " as a field separator.
done

echo


von da (http://www.tldp.org/LDP/abs/html/arrays.html)

MfG Peschmä

ergentwie bringt er mir nur fehler bei dem script
und zwar gleich in der ersten zeile
syntax error at line 5 : `(' unexpected
ich habe die $0 durch die die variabale $datafile geändert gehabt. aber auch vorher kamm die meldung

peschmae
13-05-2004, 14:18
Ich hab das Script so nicht ausprobiert - war halt eben da gleich so ein Beispiel das das gewünschte macht.

Ich würde mal statt
script_contents=( $(cat "$datafile") )
script_contents=$(cat "$datafile")
schreiben. Ich sehe ehrlich gesagt nicht für was die () da sein sollen (allerdings aber auch nicht, wieso es _ohne_ besser/überhaupt gehen sollte als mit.

MfG Peschmä