PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bash Variablen auslagern



dollar
03-07-2014, 14:30
Hallo Community

Ich habe den Drang meine Scripts zu verbessern.

Zuerst einmal etwas über das Gegebene:
- Ein übergeordnete Software ruft eine Reihe verschiedener Scripts auf. Die Abfolge der Scripts unterscheidet sich von Fall zu Fall.
- Die meisten der aufgerufenen Scripts modifizieren und definieren (unter Anderem) Variablen.
- Um die Variablen wieder für das nächste Script zur Verfügung zu stellen, speichere ich diese in einer TXT Datei zwischen.
- in jedem Script wird dieses TXT File wieder eingelesen, die Variablen sind dann wieder verfügbar.



. /path/to/Variablen.txt


Das Problem:
Mit der Weiterentwicklung der Scripts kommen neue Variablen hinzu und alte fallen weg. Das heisst:
=> dass es früher oder später "Leichen" in den TXT Dateien gibt (nämlich dann, wenn nicht 100% sauber gearbeitet wird)
=> es einfach nur mühselig ist, diese unzähligen Einträge ala:


...
echo "VAR1=$VAR1" >> Variablen.txt
echo "VAR2=$VAR2" >> Variablen.txt
echo "VAR3=$VAR3" >> Variablen.txt
...


zu pflegen.


Was ich nun suche, ist eine einfachere bzw. geschicktere Art und Weise, Variablen für andere Scripts zur Verfügung zu stellen.
Nur leider habe ich die Lösung dafür nicht mal im Ansatz.

Ich arbeite mit der GNU bash 3.2.51 und wäre froh wenn dies so bleiben könnte.


Jeder Gedankenanstoss ist herzlich Willkommen!


Grüsse $dollar

netzmeister
07-07-2014, 10:05
Hi,

lies Dir das hier mal durch: http://stackoverflow.com/questions/4181703/how-can-i-concatenate-string-variables-in-bash

dollar
08-07-2014, 16:09
Hi netzmeister

Danke für den Link, aber der Topic ist ein anderer; und zwar habe ich x (haufenweise) Variablen welche ich für nachfolgende Scripts in einem TXT auslagere.
Ich lagere diese deshalb in ein TXT aus, weil ich nicht weiss, welches Script als nächstes auf die Variablen zugreifen wird (der Zugriff ist prozessabhängig).

Mein Problem ist nun, dass das schreiben in die Textdatei wiefolgt:



...
echo "VAR1=$VAR1" >> Variablen.txt
echo "VAR2=$VAR2" >> Variablen.txt
echo "VAR3=$VAR3" >> Variablen.txt
...


..zuhnemend unübersichtlicher wird. Es ist allgemein auch ziemlich fehleranfällig.

Ich suche nach einem Befehl, welcher alle in diesem Script verwendeten Variablen automatisch in eine Datei schreibt - irgendwie sowas würde ich mir auf jeden Fall wünschen.


Gruss $dollar

dollar
09-07-2014, 14:19
Hallo

Ich habe nun eine Lösung gefunden:


( set -o posix ; set ) >/tmp/variables.before
...
source script
...
( set -o posix ; set ) >/tmp/variables.after
diff /tmp/variables.before /tmp/variables.after
rm /tmp/variables.before /tmp/variables.after



Quelle: http://stackoverflow.com/questions/1305237/how-to-list-variables-declared-in-script-in-bash

PS: um exakt die Änderungen ohne Angaben zur Zeile etc. per diff Befehl zu erhalten brauchst Du das hier:
diff file1 file2 | grep ">" | sed 's/^> //g' > diff_file
Quelle: http://stackoverflow.com/questions/4078933/find-difference-between-two-text-files-with-one-item-per-line


Grüsse $dollar