Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?
20.10.2021, 14:18:33

.
Einloggen mit Benutzername, Passwort und Sitzungslänge

Mitglieder
Statistiken
  • Beiträge insgesamt: 758750
  • Themen insgesamt: 60974
  • Heute online: 714
  • Am meisten online: 2287
  • (22.01.2020, 19:20:24)
Benutzer Online

Autor Thema:  bash, Wie Variable eines Scripts, anderen Script verfügbar zu machen ?  (Gelesen 324 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Wenn ich mich nicht irre, habe ich hierzu schon einmal einen Thread bei Linux Mint Users gelesen. Da ich diesen nicht finde, ist das jedoch evtl. doch nicht der Fall. Daher folgende Frage:

Was gibt es für Wege, eine in einem bash Script verwendete Variable einem anderen bash Script verfügbar zu machen ?

Was ich machen will ist etwa folgendes:

script1.sh
#!/bin/bash

var_aus_script1="Hallo du da vor dem Monitor"
echo "$var_aus_script1" # das geht

read -p

script2.sh
#!/bin/bash

echo "$var_aus_script1" # geht bisher nicht im Sinne der Fragestellung

read -p
« Letzte Änderung: 21.09.2021, 10:49:41 von John.Miller »

Hi

Du kannst die gewünschte Variable in eine Datei schreiben und im anderen Script wieder einlesen.

Rufst du das zweite Script im ersten auf? Dann kannst die Variable mit export verfügbar machen oder rufst das zweite Script mit der Variable als Parameter auf.

Script 1.sh
#!/bin/sh
welt="hallo welt"
export welt
echo $welt
./2.sh

Script 2.sh
#!/bin/sh
echo $welt

oder so

Scrript 1
#!/bin/sh
welt="hallo welt"
echo $welt
./2.sh "$welt"

Script 2
#!/bin/sh
echo $1



Mal so als nicht Code Profi gedacht.
BalouB

Wenn ich mich nicht irre, habe ich hierzu schon einmal einen Thread bei Linux Mint Users gelesen.
Moin,
meinst diesen: https://www.linuxmintusers.de/index.php?topic=69560.msg901928#msg901928
Gruß
Wolfgang

meinst diesen: https://www.linuxmintusers.de/index.php?topic=69560.msg901928#msg901928
Das war genau das was ich "mal gesehen" und nun wieder gesucht habe.

Damit kann ich jetzt schon mal insgesamt folgendes machen:

Eine Datei zur Übergabe von Variablen erzeugen, wenn sie noch nicht existiert:
filename=$dir/meinvar.sh
if [ ! -f $filename ]
then
    touch $filename
fi

Variable und Variablenwert per Hand in die Datei schreiben, da ich beides noch nicht per Script kann.
var_a=123
var_b=234
var_c=345

script_1.sh # Variablen lesend verwenden, die in einer anderen Datei stehen und per source dateiname.sh eingebunden werden.
#!/bin/bash
source meinvar.sh

echo var_a
echo var_b
echo var_c
read -p

script_2.sh ## Variablen lesend verwenden, die in einer anderen Datei stehen und per source dateiname.sh eingebunden werden.
#!/bin/bash
source meinvar.sh

echo var_a
echo var_b
echo var_c
read -p

Wofür ich jetzt noch eine Lösung suche:
* wie ich per bash in folgender Beispieldatei bei einer bereits bestehenden Variable, einen Wert setzen kann, egal ob dort bereits einer gesetzt ist, wie bei "var_a=123" oder noch kein Wert gesetzt ist wie bei z.B. "var_d=".

meinvar.sh
#!/bin/bash
var_a=123
var_b=234
var_c=345

Folgendes muss ich noch durchsehen:
* https://linuxhint.com/write_variable_file_bash/

Möglicher Weise geht das in dem Fall in etwa wie folgt:
echo "$var_c=456 >> meinvar.sh
« Letzte Änderung: 21.09.2021, 15:32:34 von John.Miller »

HI

In Datei schreiben

echo "var1=123" >> vari.shmit zweimal >> wird der Text angehängt, mit einmal > die Datei neu erstellt

Den Text ersetzen zb.

sed -e 's/var_a=321/var_a=123/' 2.sh
sed 's/Suchstring/Ersatzstring/' datei

BalouB


In Datei schreiben
echo "var1=123" >> vari.sh
mit zweimal >> wird der Text angehängt, mit einmal > die Datei neu erstellt
Das funktioniert bei mir bestens.

sed -e 's/var_a=321/var_a=123/' 2.sh
sed 's/Suchstring/Ersatzstring/' datei

Das habe ich bisher nicht hin bekommen.

Hi

#!/bin/bash

echo "var_a=123" > 2.sh

sed -i 's/var_a=123/var_a=321/' 2.sh

In der ersten Zeile wird die Datei 2.sh erzeugt mit dem Inhalt var_a=123
In der zweiten Zeile wird aus var_a=123 var_a=321

hier noch ein wenig Lesestoff zum Theme sed
https://www.ionos.de/digitalguide/server/konfiguration/linux-sed-befehl/
https://wiki.ubuntuusers.de/sed/

Da sed ein Werkzeug mit vielen Möglichkeiten ist müßte man deinen Code sehen um möglichen Fehlern
auf die Spur zu kommen.

BalouB

Was gibt es für Wege, eine in einem bash Script verwendete Variable einem anderen bash Script verfügbar zu machen ?

Der einfachste Weg ist, nicht 2 Sripte zu verwenden, sondern 1 Script mit 2 Funktionen (die das tun, was Du mit 2 Scripten vorhast). Oberhalb der Funktionen deklarierte Variablen sind in beiden Funktionen bekannt.

Eine zweite mögliche Lösung wäre das "export"-Statement im Bashscript. Ein in der gleichen Terminalsession laufendes weiteres Script kann mit dieser exportierten Var arbeiten.
https://linuxhint.com/bash_export_command/