我想将一个数组作为参数传递给一个函数,并向该数组添加一个新元素。 然后将数组传递给另一个函数并打印其内容。 (这一切都在Bash中。)
syntax error near unexpected token `"$2"'
` $1+=("$2")'
这是我得到的全部,可能是因为无法使用为变量$
分配值。我不知道如何解决这个问题。你能救我吗?
这是我的方法:
#/bin/bash
add_element()
{
$1+=("$2")
}
print_array()
{
for i in "${$1[@]}"
do
echo "$i"
done
}
declare -a ARRAY
add_element ARRAY "a"
add_element ARRAY "b"
add_element ARRAY "1,2"
add_element ARRAY "d"
print_array ARRAY
答案 0 :(得分:1)
这是一种可能性,使用间接扩展。
#/bin/bash
add_element()
{
local a="$1[@]"
a=( "${!a}" )
printf -v "$1[${#a[@]}]" "%s" "$2"
}
print_array()
{
local a="$1[@]"
printf '%s\n' "${!a}"
}
declare -a array
add_element array "a"
add_element array "b"
add_element array "1,2"
add_element array "d"
print_array array
评论:
mapfile
内置(默认情况下存储在名为ARRAY
的数组中),可能就是这种情况。