无法在env循环中导出envvars?

我有一个函数,我试图导出一些环境变量:

env -0 | while IFS='=' read -r -d '' env_var_name env_var_value; do
    # Some logic here, then:
    export MY_ENV_VAR=hello
done

但是,我只是注意到这一点export并且unset在此循环中不起作用。如果我不能在循环内执行这些导出,那么执行这些导出的最佳方法是什么?将它们存储在某个地方并在循环外执行它们?

回答

循环不是问题。问题实际上是管道。当您通过管道传递到命令时,会创建一个子外壳,并且在该子外壳内设置的任何变量在退出时都会消失。您可以使用进程替换来解决此问题:

while IFS='=' read -r -d '' env_var_name env_var_value; do
    # Some logic here, then:
    export MY_ENV_VAR=hello
done < <(env -0)


以上是无法在env循环中导出envvars?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>