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

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

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

while [ "$2" != "-*" -a "$#" -gt 0 ]; do
    BuildTypeList["$BuildTypeLen"] = "$2"
    BuildTypeLen=${#BuildTypeList[*]}
    shift
done

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

最佳答案

仅遍历所有参数,然后有选择地将它们附加到列表中,会更简单。

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 $#

关于arrays - 在bash中将argv条目追加到数组(动态填充数组),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12138390/

10-12 13:07