在bash中将argv条目附加到数组(动态填充数组)

qiu*_*ian 5 arrays bash shell dynamic

我试图将参数列表("$@")中的内容($1也包括以破折号开头的任何值)添加到bash中的数组中.

我当前的代码如下,但无法正常运行:

BuildTypeList=("armv7" "armv6")
BuildTypeLen=${#BuildTypeList[*]}

while [ "$2" != "-*" -a "$#" -gt 0 ]; do
    BuildTypeList["$BuildTypeLen"] = "$2"
    BuildTypeLen=${#BuildTypeList[*]}
    shift
done
Run Code Online (Sandbox Code Playgroud)

我的目的是BuildTypeList在运行时添加内容,而不是静态地将其内容定义为源的一部分.

gle*_*man 13

附加到+=运算符的数组:

ary=( 1 2 3 )
for i in {10..15}; do
    ary+=($i)
done
echo "${ary[@]}" # => 1 2 3 10 11 12 13 14 15
Run Code Online (Sandbox Code Playgroud)


che*_*ner 3

更简单的方法是迭代所有参数,然后有选择地将它们附加到列表中。

BuildTypeList=("armv7" "armv6")
first_arg=$1
shift;

for arg in "$@"; do
    [[ $arg != -* ]] && BuildTypeList+=( "$arg" )
done

# If you really need to make sure all the elements
# are shifted out of $@
shift $#
Run Code Online (Sandbox Code Playgroud)