首页 > 解决方案 > 将函数局部变量导出到环境

问题描述

考虑以下代码:

#!/usr/bin/bash

t_export() {
  declare dummy="Hello"
  export dummy
  echo dummy: $dummy
  echo printenv dummy: $(printenv dummy)
}

t_export
echo dummy: $dummy
echo printenv dummy: $(printenv dummy)

输出:

dummy: Hello
printenv dummy: Hello
dummy:
printenv dummy:

你怎么解释这个?我认为环境始终是全局的,因此变量dummy在函数之外也可见。

标签: bashenvironment-variables

解决方案


export不会将值复制到当前环境中。相反,它将 export 属性设置为name。当一个新进程启动时,任何标有该属性的变量(连同它们的当前值)都被复制到新进程的环境中。

返回时t_export,变量dummy超出范围,这意味着它不再可用于导出到新进程。


推荐阅读