流程替换中变量的范围

流程替换中变量的范围

我有一个带有两个参数的命令。假设我们想通过进程替换来创建两个参数:

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

必须做什么才能使 $var 在第二次替换中可用?

答案1

问题是您只var在第一个子 shell 中进行分配;第二个子 shell 无权访问其中分配的任何内容。要访问两者中的变量,您需要事先声明它:

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)

相关内容