流程替換中變數的範圍

流程替換中變數的範圍

我有一個帶有兩個參數的命令。假設我們想透過進程替換來建立兩個參數:

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

必須做什麼才能使 $var 在第二次替換中可用?

答案1

問題是您只var在第一個子 shell 中進行分配;第二個子 shell 無權存取其中分配的任何內容。要存取兩者中的變量,您需要事先聲明它:

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

如果您需要保留原始內容並追蹤更改它的內容:

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)

相關內容