Область действия переменных в процессе замены

Область действия переменных в процессе замены

У меня есть команда, которая принимает два аргумента. Предположим, мы хотим создать оба аргумента с помощью подстановки процесса:

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)

Связанный контент