Alcance de las variables en una sustitución de procesos

Alcance de las variables en una sustitución de procesos

Tengo un comando que toma dos argumentos. Supongamos que queremos crear ambos argumentos mediante sustitución de procesos:

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

¿Qué hay que hacer para que $var esté disponible en la segunda sustitución?

Respuesta1

El problema es que sólo estás asignando varen la primera subcapa; la segunda subcapa no tiene acceso a nada de lo asignado allí. Para acceder a una variable en ambos, es necesario declararla de antemano:

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

Si necesita conservar el original y realizar un seguimiento de las cosas que lo cambian:

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)

información relacionada