bash - 将函数局部变量导出到环境
问题描述
考虑以下代码:
#!/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
不会将值复制到当前环境中。相反,它将 export 属性设置为name。当一个新进程启动时,任何标有该属性的变量(连同它们的当前值)都被复制到新进程的环境中。
返回时t_export
,变量dummy
超出范围,这意味着它不再可用于导出到新进程。
推荐阅读
- ionic-framework - 为什么 ion-icon 没有在 ionic vue 项目中显示?
- reactjs - 从 react-jsonschema-form 获取更新的字段值
- c - C中整数的无符号和后缀
- sql - 在 JSONB 列 POSTGRES 上选择 DISTINCT
- python - 将打印在不同行上的输出转换为列表 python
- r - Tidymodels:R 中的决策树学习 - 错误:未选择变量或术语
- python - 如何从 Django 过滤器中删除多余的点?
- javascript - 忽略某些对象值的 Javascript 排序,将它们准确地留在它们所在的位置
- flutter - 未定义命名参数海拔,
- reactjs - 从表单提交事件访问 typescript 中的 event.target.elements 属性