gpt4 book ai didi

arrays - Bash 间接引用关联数组

转载 作者:行者123 更新时间:2023-11-29 09:01:28 25 4
gpt4 key购买 nike

在这个非常简化的示例中,我需要处理数组元素的键和值:

declare -A writer
writer[H.P.]=Lovecraft
writer[Stephen]=King
writer[Clive]=Barker
writer[Jack]=Ketchum

for i in ${!writer[@]}
do
echo "$i ${writer[$i]}"
done

fullname()
{
pointer=$1[@]
for i in "${!pointer}"
do
echo "? $i"
done
}
fullname writer

该函数必须以与之前的示例循环相同的格式显示输出,并且它应该接收数组名称、键或值列表,所有这些我都尝试过,但没有成功。非常感谢任何建议。

最佳答案

从 Bash 4.3 开始,declare 有一个标志 -n 来定义引用(这大致等同于 C++ 中的引用)。此标志极大地简化了您的问题:

fullname() {
declare -nl pointer="$1"
for i in "${!pointer[@]}"
do
echo "${pointer[$i]} $i"
done
}

如果您的散列键中有空格或有趣的符号(与接受的答案不同),那将是安全的。

关于arrays - Bash 间接引用关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27456950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com