
У меня есть команда, которая принимает два аргумента. Предположим, мы хотим создать оба аргумента с помощью подстановки процесса:
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)