【发布时间】:2021-10-08 18:40:53
【问题描述】:
例如在这个简单的脚本中
#!/bin/bash
declare -a MYARRAY1
declare -a MYARRAY2
function updatearray {
ARRAY=$1
VALUE=$2
$ARRAY+=$VALUE
}
updatearray MYARRAY1 "yyyy "
updatearray MYARRAY2 "bbbb "
echo "${MYARRAY1[@]}"
echo "${MYARRAY2[@]}"
exit 0
只会导致“第 10 行:MYARRAY1+=yyyy:找不到命令”,而不是更新数组。这实际上是针对我正在处理的更复杂的 bash 脚本,它有更多我想要更新的数组,所以我希望避免“case”语句,这意味着函数体很大
【问题讨论】:
-
您需要 bash 4.3 或更高版本;您想要的功能称为 namerefs
-
顺便说一句,最好使用 POSIX 函数声明 --
updatearray() {没有function。见wiki.bash-hackers.org/scripting/obsolete
标签: arrays linux bash function