我正在尝试将参数列表("$@"
)中的内容(不包括$1
以及以破折号开头的任何值)附加到bash中的数组中。
我的当前代码如下,但无法正常运行:
BuildTypeList=("armv7" "armv6")
BuildTypeLen=${#BuildTypeList[*]}
while [ "$2" != "-*" -a "$#" -gt 0 ]; do
BuildTypeList["$BuildTypeLen"] = "$2"
BuildTypeLen=${#BuildTypeList[*]}
shift
done
我的目的是在运行时向BuildTypeList
添加内容,而不是静态地将其内容定义为源的一部分。
答案 0 :(得分: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
答案 1 :(得分: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 $#
答案 2 :(得分:2)