繁体   English   中英

将函数局部变量导出到环境

[英]Exporting a function local variable to the environment

考虑以下代码:

#!/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在函数外部也是可见的。

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

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

在函数内部declare默认为local 使用-g从函数内部声明全局。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM