Lieber Besucher, herzlich willkommen bei: Linux Forum Linux-Web.de.
Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert.
Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können.
Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang.
Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.
SHELL= datei auslesen
Hallo zusammen,
ich hoffe hier kann man mir helfen.
ich habe drei datein
DATAFILE="/ora_2/oradata/backup/cold/DATAFILE.lst";
LOGFILE="/ora_2/oradata/backup/cold/LOGFILE.lst";
CONTROLFILE="/ora_2/oradata/backup/cold/CONTROLFILE.lst";
diese drei datein, möchte ich auslesen.
der inhalt dieser datein. sehen so ca 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
ich muss es jetzt schaffen, jede datei einzelnt auszulesen. und jede zeile ( also jede datei) in eien variable oder arry rein zuschreiben. aber das bekomme ich absoult nicht hien.
kann mir jemand hier helfen ?
wäre super
Muss es denn unbedingt ein Shell-Script sein?
In Perl wäre das im Handumdrehen gemacht!
(hängt aber vom endgültigen Einsatzzweck ab)
Michael
Life is like ice cream: enjoy it before it melts!
"If there is (a God), all evidence indicates that He hates me." - Matt Groening
jep muss in shell sein
sonts wäre es ja zu leicht :-)
ne im ernst muss leider shell sein
Also mache ich hier mal den Anfang
Leider programmiere ich viel zu selten Shell-Scripte, so dass dies nur einen Anfang darstellen kann ...
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#!/bin/sh
Datei=textdatei
exec 0<"$Datei"
line_count=`wc $Datei | awk '{ print $1 }'` # Zeilen in Datei
for line in `seq $line_count`
do
read line
echo $line
done
exit 0
|
Michael
Life is like ice cream: enjoy it before it melts!
"If there is (a God), all evidence indicates that He hates me." - Matt Groening
erstmal ein dankeschön für deine bemühungen
ich habe gerade dein script benutzt.
er kennt den befehel seq leider nicht
./test.sh[37]: seq: not found
:-(
Mist, in Deinem Profil steht ja "Solaris"
Da steht /bin/sh noch für das Original!
Hast Du auch ne bash installiert? (wenn ja, erste Zeile auf #!/pfad/zu/bash umstellen) Ansonsten kann ich Dir nicht helfen ...
Michael
Life is like ice cream: enjoy it before it melts!
"If there is (a God), all evidence indicates that He hates me." - Matt Groening
hehe
hatte vorhien schon mit ksh und bash getestet
geht leider beides nicht
ich bin auch der meinung das es diesen befehel seq garnicht in der shell gibt
sowieso
man seq: seq - print a sequence of numbers
Michael
Life is like ice cream: enjoy it before it melts!
"If there is (a God), all evidence indicates that He hates me." - Matt Groening
guck mal ich habe das jetzt so gelöst
n=1
while read line ;
do
eval "line$n=\"$line\""
n=`expr $n + 1`
done < $DATAFILE
klappt jetzt auch wunderbar
nur jetzt muss ich ergentwie mit basename die ausgabe spalten
also z.b. bei $line1 ein basename drauf das ich nur noch den dateinamen habe.
seq ist ein eigenstaendiges Programm und keine Built-in bash Kommando.
Gruss,
kp
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
$ for i in $(cat test);do echo $i;done
/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
$ x=0;for i in $(cat test);do echo $x: $i;x=$(($x+1));done
0: /ora_2/test/DBTEST33/system01.dbf
1: /ora_2/test/DBTEST33/undotbs01.dbf
2: /ora_2/test/DBTEST33/indx01.dbf
3: /ora_2/test/DBTEST33/tools01.dbf
4: /ora_2/test/DBTEST33/users01.dbf
$ x=0;for i in $(cat test);do eval y$x=$i;x=$(($x+1));done
$ echo $y2
/ora_2/test/DBTEST33/indx01.dbf
|
Laesst sich beliebig weiterspinnnen das Spielchen...
das ist jetzt aber (t)csh, oder?
Life is like ice cream: enjoy it before it melts!
"If there is (a God), all evidence indicates that He hates me." - Matt Groening
Nee, da war 'ne orig. sh.
Wobei ich das ganze auch auf 'ner zsh und bash getestet habe - mit (t)csh funktioniert das so nicht.
[Edit]Auch mit ksh funktionierts[/Edit]
> mit (t)csh funktioniert das so nicht.
ist mir kurz danach auch aufgefallen
*peinlich*
(wobei ich mein Posting nicht wegzensieren wollte)
Michael
Life is like ice cream: enjoy it before it melts!
"If there is (a God), all evidence indicates that He hates me." - Matt Groening