Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

bash script: variable aus anderer datei holen

449 views
Skip to first unread message

Thomas Rechberger

unread,
Nov 1, 2011, 7:16:17 AM11/1/11
to
Ich möchte eine Variable in einer anderen Datei ablegen und vom
Hauptscript aus, aufrufen. Wie geht das? Habe cat und source probiert.

User

unread,
Nov 1, 2011, 7:58:47 AM11/1/11
to
Thomas Rechberger wrote:
> Ich mᅵchte eine Variable in einer anderen Datei ablegen und vom
> Hauptscript aus, aufrufen. Wie geht das? Habe cat und source
> probiert.

source tut das eigentlich schon.
Mᅵglicherweise willst Du aber noch mit "export MYVAR=XY" ins
environment exportieren.
Message has been deleted

Werner Flamme

unread,
Nov 1, 2011, 8:04:44 AM11/1/11
to
Thomas Rechberger [01.11.2011 12:16]:
> Ich mᅵchte eine Variable in einer anderen Datei ablegen und vom
> Hauptscript aus, aufrufen. Wie geht das? Habe cat und source probiert.

Soviel Informationen, und niemand hilft :->

Verstehe ich gar nicht, ich lege meine Variablen auch in anderen
Scripten ab, und sourcen klappt. Warum klappt es bei Dir nicht?

a) welche Shell benutzt Du? Bash? C-Shell?
b) wie legst Du die Variablen ab?
c) wie sourct Du?

Ich habe ein Script, nennen wir es ~/bin/laufmal.sh. Und eine
Konfigurationsdatei, hier genannt ~/.laufrc.

In der Config stehen Zeilen wie
VAR1=/usr/bin/local
VARI2='who am I'

Im Script steht dann sowas:

. $HOME/.laufrc
if [ -z "$VAR1" ]; then
echo "VAR1 nicht gesetzt - Konfig kaputt?"
exit 42
fi

HTH
Werner

Gernot Fink

unread,
Nov 1, 2011, 12:35:00 PM11/1/11
to
In article <4eafd4fe$0$6565$3ca0...@newsspool4.vodafone-ip.de>,
Thomas Rechberger <nos...@gmail.com> writes:
> Ich möchte eine Variable in einer anderen Datei ablegen und vom
> Hauptscript aus, aufrufen. Wie geht das? Habe cat und source probiert.
variable=$(cat datendatei.txt)

--
MFG Gernot

Realname [m]

unread,
Nov 1, 2011, 1:27:00 PM11/1/11
to
Heiko Schlenker <hsc...@gmx.de> schrieb:
> * Thomas Rechberger <nos...@gmail.com> schrieb:
>> Ich möchte eine Variable in einer anderen Datei ablegen und vom
>> Hauptscript aus, aufrufen. Wie geht das? Habe cat und source probiert.
>
> Zunächst solltest Du die thematisch passende Newsgroup probieren, und
> zwar de.comp.os.unix.shell.

Warum wählst du nicht die thematisch passende Newsgroup für dein Gesülze?

Diese wäre gewesen: de.alt.gruppenkasper

Bitte F'up2 beachten!

--
Es geht darum, was wo üblich ist. In Webforen nutze ich auch ein
Pseudonym.
-- Henning Sponbiel beschreibt seinen Konformitätszwang
in <gnf49i...@henning.sponbiel.de>

Realname [m]

unread,
Nov 1, 2011, 1:29:27 PM11/1/11
to
Thomas Rechberger <nos...@gmail.com> schrieb:
> Ich möchte eine Variable in einer anderen Datei ablegen und vom
> Hauptscript aus, aufrufen. Wie geht das? Habe cat und source probiert.

Diese Beschreibung ist murks.

Sag' uns: Was hast du VERSUCHT (Code),
was IST passiert,
und was HÄTTE passieren SOLLEN?

Burkhard Ott

unread,
Nov 1, 2011, 2:21:44 PM11/1/11
to
Einfacher mit . DEINEDATEI

e.g.

echo "MYVAR=blubb">config.txt


#!/bin/bash

. config.txt

echo MYVAR;

Gernot Fink

unread,
Nov 1, 2011, 3:50:01 PM11/1/11
to
In article <j8pdbo$ra3$1...@news.albasani.net>,
Burkhard Ott <news...@derith.de> writes:
> On Tue, 01 Nov 2011 16:35:00 +0000, Gernot Fink wrote:
>
>> In article <4eafd4fe$0$6565$3ca0...@newsspool4.vodafone-ip.de>,
>
> echo "MYVAR=blubb">config.txt
>
>
> #!/bin/bash
>
> . config.txt
>
> echo MYVAR;

ich bekomm da immer magengrummeln:
echo "MYVAR=blubb;tuwasböses">config.txt

--
MFG Gernot

Manuel Rodriguez

unread,
Nov 1, 2011, 4:07:58 PM11/1/11
to
On 1 Nov., 12:16, Thomas Rechberger <nos...@gmail.com> wrote:
> Ich möchte eine Variable in einer anderen Datei ablegen und vom
> Hauptscript aus, aufrufen. Wie geht das? Habe cat und source probiert.


Das Konzept von Variablen ist diametral zur Intention von Bash-
Scripten. Beispiel: in BASIC schreibt man strukturierte Programme in
der Art

10 LET A=3.14
20 PRINT A

Das ist klassische Code-Entwicklung mit fest definierten
Schlüsselworten, Zeilennummern und eben gelabelten Speicherbereichen
(A). Bash-Scripte hingegen sind objektorientiert: hier gibt es keine
Variablen mehr sondern es gibt nur noch Parameter, die man über Pipes
an fremde Objekte verschickt. Z.B.

grep -o '3.14' foo.bar

Selbstverständlich könnte man sich einreden, dass bei Pipes auch nur
Variablen verwendet werden, und innerhalb von Bash-Scripten gibt es
tatsächlich klassische Variablen ($A=3.14), aber damit hat man die
Objektorientierung nicht verstanden und kann gleich bei BASIC
bleiben.

Thomas Rechberger

unread,
Nov 1, 2011, 8:26:49 PM11/1/11
to
Am 01.11.2011 17:35, schrieb Gernot Fink:
> In article<4eafd4fe$0$6565$3ca0...@newsspool4.vodafone-ip.de>,
> Thomas Rechberger<nos...@gmail.com> writes:
>> Ich m�chte eine Variable in einer anderen Datei ablegen und vom
>> Hauptscript aus, aufrufen. Wie geht das? Habe cat und source probiert.
> variable=$(cat datendatei.txt)
>

genau das habe ich gesucht

ich hatte sonst immer das Problem das die Zeile ausgef�hrt wurde anstatt
es nur zu speichern

Helmut Hullen

unread,
Nov 2, 2011, 1:38:00 AM11/2/11
to
Hallo, Thomas,

Du meintest am 02.11.11:

>>> Ich möchte eine Variable in einer anderen Datei ablegen und vom
>>> Hauptscript aus, aufrufen. Wie geht das? Habe cat und source
>>> probiert.

>> variable=$(cat datendatei.txt)
>>

> genau das habe ich gesucht

> ich hatte sonst immer das Problem, dass die Zeile ausgeführt wurde
> anstatt es nur zu speichern

Es gibt 2 (grundsätzliche) Möglichkeiten:

a) Du legst nur den Wert in einer Datei ab, dieser Wert wird via "cat"
oder "read" oder einer sonstigen Lese-Operation geholt und im
Hauptprogramm der Variablen zugewiesen.

b) Du arbeitest mit "source", das ist die Shell-Variante einer
"include"-Anweisung. Dann wird die gesamte "gesourcete" Datei scheinbar
an der Stelle ins Hauptprogramm eingebaut, dann muss also in der
gesourceten Datei

Variable=Wert

stehen.

Nur sicherheitshalber:
Der Befehl "source $Datei" funktioniert nicht in jeder Shell-Variante,
der Befehl ". $Datei" funktioniert zwar überall, erzeugt aber beim
ungeübten Leser eher Lesefehler.

Viele Gruesse
Helmut

"Ubuntu" - an African word, meaning "Slackware is too hard for me".

User

unread,
Nov 2, 2011, 7:04:20 AM11/2/11
to
Thomas Rechberger wrote:
> Am 01.11.2011 17:35, schrieb Gernot Fink:
>> In article<4eafd4fe$0$6565$3ca0...@newsspool4.vodafone-ip.de>,
>> Thomas Rechberger<nos...@gmail.com> writes:
>>> Ich möchte eine Variable in einer anderen Datei ablegen und vom
>>> Hauptscript aus, aufrufen. Wie geht das? Habe cat und source
>>> probiert.
>> variable=$(cat datendatei.txt)
>>
>
> genau das habe ich gesucht
>
> ich hatte sonst immer das Problem das die Zeile ausgeführt wurde
> anstatt es nur zu speichern

d.h. "laden" statt "aufrufen"

ohne Programmaufruf kann man auch direkt so in bash laden:

variable=$(< datendatei.txt)

Burkhard Ott

unread,
Nov 2, 2011, 11:34:31 AM11/2/11
to
Das war ein Beispiel das er es via copy/paste nachvollziehen kann.
Wie er das letztendlich implementiert ueberlasse ich im selbst.
0 new messages