32600


シェルスクリプトで重複するデータのない配列を作りたいのですが、配列に含まれていないデータのみを代入する、もしくは、代入したとしても配列内のデータの重複を取り除く方法を教えてください。  
よろしくお願いいたします。

【想定環境】  
bash 3.x


CC BY-SA 3.0
2017-02-11T23:18:31.730
32597
2017-02-13T02:13:58.087
2017-02-13T02:13:58.087
754
9029
question
bash shellscript array
シェルスクリプトで重複するデータのない配列を作る方法


metropolisさんのコメントのように連想配列を使うと、こんな感じでしょうか（bash >= 4.0）。

[code]

    # 重複のある配列
    ary=(foo bar foo baz bar)
    
    # aryの各要素を連想配列aaのキーとする
    declare -A aa
    for x in "${ary[@]}"; do
      aa[$x]=''
    done
    
    # aaのキーをaryに入れなおしてできあがり
    ary=("${!aa[@]}")
    
    # aryの全要素を出力してみる
    echo "${ary[@]}"        #=> bar baz foo
    
[/code]

**追記：**

連想配列を使わないとなるとこんな感じでしょうか。

[code]

    ary=(foo bar foo baz bar 'a b')
    
    ary2=()
    i=0
    while read -r x; do
      ary2[i++]="$x"
    done < <(printf '%s\n' "${ary[@]}" | sort -u)
    
[/code]


CC BY-SA 3.0
2017-02-12T06:10:55.827
32600
2017-02-12T10:01:22.020
2017-02-12T10:01:22.020
4010
4010
32597
answer