Inhalt einer Variable in einem zweiten Script verwenden

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
ManfredG
Beiträge: 112
Registriert: 12.08.2004 17:38:14

Inhalt einer Variable in einem zweiten Script verwenden

Beitrag von ManfredG » 31.01.2015 11:36:01

Hallo zusammen,

Ich habe gerade zwei Shell Scripte geschrieben und würde gerne den Inhalt
einer Variable des ersten Scriptes in dem zweiten Script weiter verarbeiten.

Wie kann ich das machen?

Meine bisherige Lösung:
- Script A schreibt den Inhalt der Variable in eine Datei
- Script B liest diese Datei und setzt den Inhalt wieder in eine Variable

Das funktioniert natürlich, ist aber auch nicht elegant.

Wie macht mann denn so etwas, wenn man es richtig machen möchte?

Danke für Eure Hilfe

alteholz
Beiträge: 41
Registriert: 11.04.2012 19:43:57

Re: Inhalt einer Variable in einem zweiten Script verwenden

Beitrag von alteholz » 31.01.2015 11:40:48

Kannst Du die Variable beim Aufruf von Script B als Parameter mitgeben?

ManfredG
Beiträge: 112
Registriert: 12.08.2004 17:38:14

Re: Inhalt einer Variable in einem zweiten Script verwenden

Beitrag von ManfredG » 31.01.2015 11:43:57

Nein, leider nicht, in diesem Fall, wäre das keine gute Lösung.

alteholz
Beiträge: 41
Registriert: 11.04.2012 19:43:57

Re: Inhalt einer Variable in einem zweiten Script verwenden

Beitrag von alteholz » 31.01.2015 17:07:32

Ok, wäre sowas wie "export VARIABLE" eine Lösung? (zumindest in der Bash Syntax, für andere Shells gibt es etwas ähnliches)

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Inhalt einer Variable in einem zweiten Script verwenden

Beitrag von Cae » 31.01.2015 18:07:07

alteholz hat geschrieben:Ok, wäre sowas wie "export VARIABLE" eine Lösung? (zumindest in der Bash Syntax, für andere Shells gibt es etwas ähnliches)
Generisch geht das ueber das Shell-unabhaengige Programm env(1):

Code: Alles auswählen

#!/bin/sh
# script-a

a_output=irgendwas

env a_output="$a_output" /path/to/script-b
und script-b wuerde das per

Code: Alles auswählen

#!/bin/sh
# skript-b

if [ -z "$a_output" ]; then
	echo >&2 'script-b: empty $a_output, exiting'
	exit 1
fi

# irgendwas mit $a_output anfangen
Wichtig ist in beiden Faellen (export und env), dass script-b von script-a aufgerufen wird, da Umgebungsvariablen nur an Kind-Prozesse weitervererbt werden koennen, nicht anders.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

newdeb
Beiträge: 134
Registriert: 03.02.2011 11:11:21
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Frankfurt

Re: Inhalt einer Variable in einem zweiten Script verwenden

Beitrag von newdeb » 31.01.2015 19:06:07

Die Frage ist, ob sich die Skripte gegenseitig aufrufen können/dürfen, d.h. ob sich die Laufzeiten der Skripte überlappen.
Falls ja, wäre eine einfache Methode zur Übergabe die Kommando-Substitution:
Skript A würde den Variableninhalt am Ende einfach auf stdout ausgeben.
(Skript A muss sonstige Ausgaben auf stdout unterdrücken oder umlenken).

Code: Alles auswählen

do_something
...
a_var="value"
...
echo "$a_var"
Skript B ruft Skript A via $(...) auf:

Code: Alles auswählen

b_var=$(/path/to/script-a)

Antworten