相关疑难解决方法(0)

如何将关联数组作为参数传递给Bash中的函数?

如何将关联数组作为参数传递给函数?这在巴什有可能吗?

以下代码未按预期工作:

function iterateArray
{
    local ADATA="${@}"            # associative array

for key in "${!ADATA[@]}"
do
    echo "key - ${key}"
    echo "value: ${ADATA[$key]}"

done

}
Run Code Online (Sandbox Code Playgroud)

将关联数组传递给像普通数组这样的函数不起作用:

iterateArray "$A_DATA"
Run Code Online (Sandbox Code Playgroud)

要么

iterateArray "$A_DATA[@]"
Run Code Online (Sandbox Code Playgroud)

arrays bash associative-array associative

36
推荐指数
5
解决办法
2万
查看次数

什么`$ {1#*=}`在Bash中意味着什么?

我在StackOverflow上找到了一个很棒的答案,它解释了如何将关联数组传递给函数.有人能够帮我弄清楚${1#*=}下面代码中的语法是什么?(从借来的答案jaypal辛格):

#!/bin/bash

declare -A weapons=(
  ['Straight Sword']=75
  ['Tainted Dagger']=54
  ['Imperial Sword']=90
  ['Edged Shuriken']=25
)

function print_array {
    eval "declare -A arg_array="${1#*=}
    for i in "${!arg_array[@]}"; do
       printf "%s\t%s\n" "$i ==> ${arg_array[$i]}"
    done
}

print_array "$(declare -p weapons)"
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止的猜测(纠正我,如果我错了任何这些):
- 1意味着传递给函数($1${1})的第一个参数
- #意味着索引$1,因为$1是一个关联数组,使得#$1
- *表示#关联数组中键的值$1

离开了=.这意味着什么?这是一种表明你想要的方式,#并且*是指关联数组的键和值吗?

arrays variables syntax bash associative-array

3
推荐指数
2
解决办法
246
查看次数