Gültigkeitsbereich von Variablen bei einer Prozesssubstitution

Gültigkeitsbereich von Variablen bei einer Prozesssubstitution

Ich habe einen Befehl, der zwei Argumente akzeptiert. Angenommen, wir möchten beide Argumente durch Prozesssubstitution erstellen:

cat <(var=123; echo $var) <(echo $var)

Was muss getan werden, um $var in der zweiten Ersetzung verfügbar zu machen?

Antwort1

Das Problem besteht darin, dass Sie nur in der ersten Subshell Zuweisungen vornehmen var; die zweite Subshell hat keinen Zugriff auf die darin zugewiesenen Werte. Um in beiden auf eine Variable zuzugreifen, müssen Sie sie vorher deklarieren:

var=123
cat <(echo $var) <(echo $var)

Wenn Sie das Original behalten und Dinge verfolgen müssen, die es ändern:

var=123                               # set the default value
PARAM1=$(/bin/something; echo $var)   # something could edit var's value
PARAM2=$(/bin/otherthing; echo $var)  # so could otherthing
cat <(echo $PARAM1) <(echo $PARAM2)

verwandte Informationen