Archiv verlassen und diese Seite im Standarddesign anzeigen : shell: datei auslesen bei vielen zeilen ?
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ä
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ä
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
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ä
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.