Observei um comportamento estranho no zsh 5.9 no mac. (A seguir está uma simplificação para reproduzir o erro, não tenta fazer sentido). Se eu executar em um terminal
$> function assigner() { OPTIONS=mutated }
$> function main() { typeset OPTIONS; assigner; echo $OPTIONS }
$> main
Isso produz:
mutated
Mas se eu alterar sutilmente a função principal para redirecionar a saída da chamada de função interna...
$> function main() { typeset OPTIONS; assigner | cat; echo $OPTIONS }
Então o resultado está em branco
E minha var OPTIONS não está mais preenchida. O que esta acontecendo aqui?