【发布时间】:2021-10-04 22:05:06
【问题描述】:
目前我有一个对数组名称进行硬编码以执行特定操作的函数。我想将需要处理的数组名作为函数参数传递,然后根据数组名执行特定的动作。如何在 bash 中实现这一点?
现在:
# array definition
declare -A array1=(
["a"]="apple"
["b"]="banana"
)
# function definition
process(){
echo "printing letters and fruits"
for letter in "${!array1[@]}"; do
fruit="${array1[$letter]}"
echo "$letter: $fruit"
done
}
# commands
process
想要的(代码错误!):
# array definition
declare -A array1=(
["a"]="apple"
["b"]="banana"
)
declare -A array2=(
["a"]="ant"
["b"]="bear"
)
# function definition
process(){
arrayname="$1"
case "$arrayname" in
"array1")
echo "printing letters and fruits"
for letter in "${!arrayname[@]}"; do
fruit="${arrayname[$letter]}"
echo "$letter: $fruit"
done
;;
"array2")
echo "printing animals only"
for letter in "${!array1[@]}"; do
animal="${array2[$letter]}"
echo "$animal"
done
;;
esac
}
# commands
process array1
process array2
【问题讨论】:
标签: arrays bash variables switch-statement associative-array