
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)