5

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

我当前的代码如下,但不能正确运行:

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

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

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

4

3 回答 3

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
于 2012-08-27T12:40:51.933 回答
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 $#
于 2012-08-27T12:48:08.020 回答
2

有很多关于这个主题的手册。例如,参见http://www.gnu.org/software/bash/manual/html_node/Arrays.html 。http://mywiki.wooledge.org/BashGuide/Arrayshttp://www.linuxjournal.com/content/bash-arrays

于 2012-08-27T08:19:30.047 回答