
Dieser Befehl:
echo '18' | source meta-cmf-raspberrypi/setup-environment
Nicht die Umgebungsvariablen setzen, sondern einfach mit folgendem ausführen:
source meta-cmf-raspberrypi/setup-environment
Mit "18" in der Eingabe.
Die Frage unter Link:Umgebungsvariablen werden nicht festgelegt, wenn meine Funktion in einer Pipeline aufgerufen wird
Das löst mein Problem nicht, weil ich Folgendes versucht habe:
echo '18' > >(source meta-cmf-raspberrypi/setup-environment)
Ohne Erfolg. Wie löse ich das Problem?
Antwort1
In der Pipeline wird das Skript in einer separaten Umgebung bezogen. Ebenso im Beispiel der Prozesssubstitution. Dies bedeutet, dass im Skript festgelegte Variablen in einer untergeordneten Umgebung für die aufrufende Shell festgelegt werden. Änderungen in einer untergeordneten Umgebung können niemals in die übergeordnete Umgebung übertragen werden.
Sie können dies auf zwei Arten lösen und vermeiden, das Skript in einer separaten Umgebung zu beziehen.
Die erste Möglichkeit würde in einer Shell funktionieren, die „Here-Strings“ versteht:
source meta-cmf-raspberrypi/setup-environment <<<18
Die zweite Möglichkeit besteht darin, ein standardmäßiges Here-Dokument zu verwenden:
source meta-cmf-raspberrypi/setup-environment <<END_INPUT
18
END_INPUT
In beiden Varianten wird das Skript in der aktuellen Umgebung bereitgestellt, wobei die Eingabe vom Here-String/Here-Dokument umgeleitet wird.