5

引数リスト ( ) からコンテンツを追加しようとしていますが、ダッシュで始まる値"$@"を除外して、bash の配列に追加しようとしています。$1

現在のコードは次のとおりですが、正しく動作しません。

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/Arrays、またはhttp://www.linuxjournal.com/content/bash-arrays

于 2012-08-27T08:19:30.047 に答える