Vorbei an einer shell-Skript-Variablen zu einer anderen shell-Skript
Ich versuche, Zugang zu einem Skript eine variable aus einem anderen Skript zum Beispiel,
script1.sh:
export a=10
export b=20
echo "testing"
exit
script2.sh:
. script1.sh
echo $a
Dem problem beteiligt, hier ist der Zugriff auf die variable 'a' vom skript1 in skript2 aber seine Ausführung alle Befehle geschrieben script1.sh das ist ärgerlich. Ich will einfach nur den Zugriff auf die exportierten Variablen in skript1 und donot wollen, führen Sie die Befehle in skript1 beim telefonieren, in skript2.
Bitte helfen!
Dank,
Karthik
InformationsquelleAutor Karthik | 2011-07-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zuweisung eine variable ist ein Befehl. Es sei denn, Sie sind bereit zum schreiben eines bash-parser in bash, was Sie wollen, nicht gemacht werden kann.
InformationsquelleAutor Ignacio Vazquez-Abrams
Was Sie zu tun versuchen (nur die Variablen aus einem anderen script, ohne das ausführen der Befehle) ist nicht möglich.
Hier ist ein workaround:
Extrahieren Sie die Variablen-Deklaration und die Initialisierung einer Dritten Datei, die dann bezogen von beiden.
common-vars:
script1.sh:
script2.sh:
InformationsquelleAutor lesmana
Wenn Ihr Variablenzuweisungen sind immer nur in der genaue form oben angegeben, das ist
dann könnte man extrahieren, diese Aufgaben mit
grep
undeval
die Ergebnisse. Ihre script2.sh wäre dannAber dies zu tun ist sehr zerbrechlich und kann zerbrechen, in viele Wege. Setzen der variable-Zuweisungen in einem Dritten Skript stammen von beiden, wie andere vorgeschlagen haben, ist weit sicherer.
Dieser kann brechen, wenn Sie noch variable Einstellungen im inneren Bedingungen, oder wenn Ihre exportierten Variablen abhängig von anderen, nicht-exportierte Variablen, bekam verpasst, oder wenn Sie und exportieren Sie die Variablen getrennt; und wenn Sie geschehen, werden mit dem Befehl substitution in Ihrer Exporte, diese würden noch laufen zu bekommen mit Ihren möglichen Nebenwirkungen.
Diese sind alle potenziell problematisch.
InformationsquelleAutor evil otto
Stimme ich mit Ignacio Vazquez-Abrams.
nicht viel Sie dagegen tun können.
Eine wahrscheinliche Lösung wäre, Sie zu trennen die Variablen-Definitionen an Dritte Skript, dass verwendet werden würde, wie Konfiguration Skript. Also beide skript1 und skript2 würde
source
dass man, um den vars definiert.InformationsquelleAutor c00kiemon5ter
script2.sh:
InformationsquelleAutor jlliagre
Übergeben Sie die variable von einem Skript zum anderen durch die übergabe der Variablen als parameter.
Das bedeutet natürlich, dass Script B wird aufgerufen, per Script A. Script B wird müssen prüfen, ob der übergebene parameter ist nicht leer.
InformationsquelleAutor Peter
Stimme ich mit "Ignacio Vazquez-Abrams" das ist eine gute Antwort auf Ihre Frage.
Aber ich habe eine andere Lösung für Sie, wo Sie nicht haben, exportieren Sie Ihre Variablen. Konzept basiert auf : verwenden Sie als Login-shell ausgeführt werden können, das Skript, anstatt eine neue shell.
Lets sagen, dass Ihre script1.sh ist :
führen Sie nun das Skript im login-shell :
Beispiel:
Nun, wenn Sie den Zugriff auf die variable a in Ihrem Skript, es wird zugänglich sein, um Sie ohne fehl.
Beispiel
Lets sagen, dass Ihre script2.sh ist :
run:
InformationsquelleAutor Vimukt