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

1

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 tem que ser feito para disponibilizar $ var na segunda substituição?

    
por awado 13.02.2016 / 01:23

1 resposta

1

O problema é que você está atribuindo apenas var no primeiro subshell; o segundo subnível não tem acesso a nada atribuído a ele. Para acessar uma variável em ambos, você precisa declarar de antemão:

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

Se você precisar manter o original e acompanhar as coisas que o alteram:

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)
    
por 14.02.2016 / 22:02