[英]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.