프로세스 대체의 변수 범위

프로세스 대체의 변수 범위

두 개의 매개변수가 있는 명령이 있습니다. 프로세스 대체를 통해 두 개의 매개변수를 생성한다고 가정합니다.

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

두 번째 대체에서 $var를 사용할 수 있게 하려면 어떻게 해야 합니까?

답변1

문제는 var첫 번째 하위 쉘에만 할당하고 두 번째 하위 쉘에는 할당된 항목에 액세스할 수 없다는 것입니다. 두 변수 모두에서 변수에 액세스하려면 미리 선언해야 합니다.

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)

관련 정보