gpt4 book ai didi

arrays - 如何将数组传递给函数并且对数组的更新反射(reflect)在函数之外

转载 作者:行者123 更新时间:2023-12-04 19:20:40 25 4
gpt4 key购买 nike

我正在尝试将数组传递给函数,并且对数组所做的任何更改都会反射(reflect)在函数之外

function update_array()
{
${1[0]}="abc" # trying to change zero-index array to "abc" ,
# bad substitution error


}

foo=(foo bar)

update_array foo[@]

for i in ${foo[@]}
do
echo "$i" # currently changes are not reflected outside the function

done

我的问题是

1)我如何访问索引数组,例如:零索引数组,在函数中,它的语法是什么

2)如何更改此索引数组,以便更改也反射(reflect)在函数外部

最佳答案

您可以通过在 var 前面加上 ! 来遍历键。 :

for key in ${!foo[@]}
do
echo "$key: ${foo[$key]}"
done

至于更新数组,您不能将其传递给函数,但该函数可以访问脚本的全局状态,这意味着您可以这样做:
#!/bin/bash

function update_array() {
foo[0]="bar"
}

foo=(foo bar)


for key in ${!foo[@]}
do
echo "$key: ${foo[$key]}"
done
# 0: foo
# 1: bar

update_array

for key in ${!foo[@]}
do
echo "$key: ${foo[$key]}"
done
# 0: bar
# 1: bar

关于arrays - 如何将数组传递给函数并且对数组的更新反射(reflect)在函数之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21026992/

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