arrays - 如何在 bash 函数中使用对关联数组的 bash 变量引用而不在调用该函数之前声明它?
问题描述
有多种方法可以从 bash 脚本中的函数获取结果,一种是使用引用变量,例如local -n out_ref="$1
,这也是我的首选方式。
我的 bash 版本是:
GNU bash, Version 5.0.3(1)-release
最近,我的一个 bash 函数需要生成一个关联数组,就像在这个示例代码中一样:
#!/bin/bash
testFunction() {
local -n out_ref="$1"
out_ref[name]="Fry"
out_ref[company]="Planet Express"
}
declare -A employee
testFunction employee
echo -e "employee[name]: ${employee[name]}"
echo -e "employee[company]: ${employee[company]}"
我将变量声明employee
为关联数组,带有declare -A
.
输出是:
employee[name]: Fry
employee[company]: Planet Express
如果我删除该行declare -A employee
,则输出为:
employee[name]: Planet Express
employee[company]: Planet Express
有没有办法将关联数组的声明移动到函数中,所以该函数的用户不需要事先这样做?
解决方案
在函数内部使用declare -Ag "$1"
,以便将employee 声明为全局变量。
推荐阅读
- react-admin - 在 react-admin 中禁用列表视图的撤消功能
- sharepoint - 错误没有阴影变量 - tslint 错误
- blueprism - 新进程无法使用会话管理运行,版本 6.0 Blue Prism
- qt - 如何使用 QtWebEngine 捕获完整的网页?
- visual-studio-code - 如何关闭 - VS CODE 打开它在java调试过程中遇到的所有内部类,例如printstream类,String类
- python - 如何更改图例栏和颜色以单独显示 Dataframe 中的每一行?(根据 index_col)
- javascript - 未捕获(承诺中)错误:提供的权重数据没有目标变量:block1_conv1_2/kernel
- android - Firebase Firestore 和身份验证错误
- mysql - MySQL 更新多行中 1 列的一部分
- google-chrome - chromium 的 auto_play white_list 是如何工作的?