PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : BASH: Datei in Array lesen ?



alm.oehi
15-06-2003, 19:51
hi,
ich bin z.Z. dabei Shellprogrammierung zu lernen mit der BASH. Jetzt wollt ich fragen, wie man es am besten anstellt, eine Datei in ein Array zu lesen, also Pro Zeile ein array element.

und dann noch was:

#!/bin/bash
var=`gftp&`
echo $!
exit 0

warum gibt dieses Script NICHT die prozess-id von gftp aus ? das script läuft auch solange, bis ich entweder gftp zu mache, oder STRG+C

kressevadder
15-06-2003, 20:43
Hallo,

ich nehm an, var wartet solange, bis dein hintergrundprozess fertig ist, erst dann ist ja seine Ausgabe abgeschlossen.

Gruss Manfred

alm.oehi
15-06-2003, 21:13
wenn ic var weglass isses immernoch so :(

kressevadder
15-06-2003, 21:19
#!/bin/bash
gftp&
echo $!

gibt dir die PID von gftp (was ist das eigentlich?), wenn nicht weiss ich auch nicht

CYP
16-06-2003, 06:29
versuch doch mal

#gftp muss natürlich laufen
#!bin/bash
var=$(pidof gftp)
echo $var




oder etwas größer

#!bin/bash

var=$(pidof gftp)

#läuft gftp ?
if [ -z $(pidof gftp) ]
then

#wen nicht dann starten
gftp

# wenn ich mich richtig erinnere muss eine klammer um die ausgabe damit sie in einem
# array gespeichert wird

var=( $(pidof gftp) )
fi


# pid(s) ausgeben
echo $var

alm.oehi
16-06-2003, 20:29
Hi, hat soweit alels funktioniert danke :)

aber:
#!/bin/bash
var=`cat menu.lst`
var=($var)
echo ${var[1]}

menu.lst:
short:name
grml:ich bin schlecht drauf

das problem ist, dass sobald Leerzeichen auftauche, jedes wort als einzelnes Array Element genommen wird. Ich möchst aber nur Pro Zeile ein element.
Muss ich sowas dann mit cat, wc, head/tail usw. machen und jede Zeile der Datei auslesen und im Array speichern ?

peschmae
17-06-2003, 12:14
Original geschrieben von kressevadder
gibt dir die PID von gftp (was ist das eigentlich?)

was denn, gftp oder die pid?

gftp: Gnome-Ftp-Programm (kann auch scp und so)
pid: eindeutige ID-Nummer jedes Prozesses (z.B. damit man ihn getrennt abschiessen kann und nicht wie unter W***** im Taskmanager testen muss, welcher der Prozesse, die blöderweise alle gleich heissen, jetzt wohl der abgestürzte ist :p )

MfG Peschmä