我在 mac 中的 zsh 5.9 中观察到一个奇怪的行为。(以下是重现错误的简化,它并不试图有意义)。如果我在终端中执行
$> function assigner() { OPTIONS=mutated }
$> function main() { typeset OPTIONS; assigner; echo $OPTIONS }
$> main
这输出:
mutated
但是如果我巧妙地更改 main 函数以重定向内部函数调用的输出......
$> function main() { typeset OPTIONS; assigner | cat; echo $OPTIONS }
然后结果就是空白
我的 OPTIONS var 不再填充。这里发生了什么?