プロセス置換における変数のスコープ

プロセス置換における変数のスコープ

2 つの引数を取るコマンドがあります。プロセス置換によって両方の引数を作成するとします。

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

2 番目の置換で $var を使用できるようにするには、何をする必要がありますか?

答え1

問題は、var最初のサブシェルでのみ割り当てが行われ、2 番目のサブシェルではそこに割り当てられたものにアクセスできないことです。両方のサブシェルで変数にアクセスするには、事前に宣言する必要があります。

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)

関連情報