PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bash Newbie Frage



superdude
21-09-2004, 18:29
Wie kann ich eine Datei, die folgendermassen aufgebaut ist:

variable1=wert1
variable2=wert2
....

so in ein bash-skript einbinden, dass ich die Variablen
dann benutzen kann?
Ich bin ein echter Newbie, ich hab's schon mit
cat, grep read (check ich nicht) versucht...

fs111
21-09-2004, 18:44
Mit ".", also einfach folgendes in dein Skript einfügen

. dateiname_mit_variablen_drin

Danach sind alle Varaiblen verfügbar.

fs111

superdude
21-09-2004, 19:48
Wenn ich einen "." beim Aufruf voranstelle, dann bekomme ich nur "... not found".
Wenn ich keinen Punkt voranstelle, dann werden Befehle in der Datei wie "ls" oder so ausgeführt, die dort eingetragenen Variablen sind jedoch nicht im aufrufenden Skript verfügbar. Hat das vielleich was mit privat/global zu tun?

Jasper
21-09-2004, 20:24
Wenn ich einen "." beim Aufruf voranstelle, dann bekomme ich nur "... not found".
Wenn ich keinen Punkt voranstelle, dann werden Befehle in der Datei wie "ls" oder so ausgeführt, die dort eingetragenen Variablen sind jedoch nicht im aufrufenden Skript verfügbar. Hat das vielleich was mit privat/global zu tun?

nein, falsch verstanden:

#!/ bin/sh
source /pfad/zu/config
-oder-
. /pfad/zu/config
echo $variable1


-j

peschmae
21-09-2004, 20:42
Du hast noch Befehle in der Konfigdatei? Soll verhindert werden dass die ausgeführt werden? (Werden sie bei einem . bzw. source-Aufruf)

MfG Peschmä

superdude
21-09-2004, 21:15
nein, falsch verstanden:

#!/ bin/sh
source /pfad/zu/config
-oder-
. /pfad/zu/config
echo $variable1


-j

Bei beiden Aufrufen erhalte ich nur '... not found', ohne Punkt erhalte ich keine Fehlermeldung, ein 'ls' wird ausgeführt, die Variablen kann ich jedoch nicht nutzten

superdude
21-09-2004, 21:16
Du hast noch Befehle in der Konfigdatei? Soll verhindert werden dass die ausgeführt werden? (Werden sie bei einem . bzw. source-Aufruf)

MfG Peschmä
Den Befehl hab' ich nur mal reingesetzt, damit ich sehe, ob die Datei überhaupt irgendwie geladen/verarbeitet wird. Normalerweise sind da nur Variablen drin

superdude
21-09-2004, 21:22
Also die Datei die eingelesen werden soll lautet timerd.conf, ihr Inhalt ist z.B.:
ALARM_TIME_4=1095787080
ALARM_TIME_5=1095847980
ANNOUNCE_TIME_4=1095786900
ANNOUNCE_TIME_5=1095847800
EVENT_INFO_APIDS_4=
EVENT_INFO_APIDS_5=
EVENT_INFO_CHANNEL_ID_4=4728759086538
EVENT_INFO_CHANNEL_ID_5=4728759086538
EVENT_INFO_EPG_ID_4=309903955495400154
EVENT_INFO_EPG_ID_5=309903955495400451
EVENT_INFO_EPG_STARTTIME_4=1095787200
EVENT_INFO_EPG_STARTTIME_5=1095848100
EVENT_REPEAT_4=0
EVENT_REPEAT_5=0
EVENT_STATE_4=0
EVENT_STATE_5=0
EVENT_TYPE_4=5
EVENT_TYPE_5=5
EXTRA_TIME_END=180
EXTRA_TIME_START=120
IDS=4,5
PREVIOUS_STATE_4=0
PREVIOUS_STATE_5=1095764400
STOP_TIME_4=1095789060
STOP_TIME_5=1095850980

wobei ich z.B. alle Variablen mit _4 benutzten möchte.
Vielleicht liegts ja am Aufbau? Da diese Datei aber noch von anderen Programmen genutzt/geschrieben wird kann ich an ihrem Aufbau nichts ändern (es kommt ja auch kein #!/bin/sh am Anfang, macht das was?)

superdude
21-09-2004, 21:38
Also, auf meinem Rechner funktionierts jetzt, wenn ich am Anfang meines Skriptes #!/bin/bash angebe mit 'source ...', mit dem Punkt am Anfang bekomme ich wiederum nur 'datei not found'.
Leider ist auf dem Zielsystem (Dbox mit Neutrino) nur die sh zur Verfügung, und da gehen beide Varianten nicht ('datei not found').
Irgendeine Idee?

superdude
22-09-2004, 14:00
Thema hat sich erledigt: Ich benuzte einfach 'grep' um mir die Werte herauszuholen...
Vielen Dank trozdem für die Tips!