Escopo de variáveis ​​em uma substituição de processo

Escopo de variáveis ​​em uma substituição de processo

Eu tenho um comando que leva dois argumentos. Suponha que queremos criar ambos os argumentos por substituição de processo:

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

O que deve ser feito para disponibilizar $var na segunda substituição?

Responder1

O problema é que você está atribuindo apenas varno primeiro subshell; o segundo subshell não tem acesso a nada atribuído nele. Para acessar uma variável em ambos, é necessário declará-la previamente:

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

Se você precisar manter o original e rastrear coisas que o alterem:

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)

informação relacionada