0

このbash3マップのlouistoの値を変更したいと思います。green

ARRAY=( "nicolas:red"
    "louis:blue" )

で上書きしようとしましARRAY+=("louis:green")たが、機能しません。キーが重複している3要素の配列になってしまいます。

注:bash4の最新のマップは使用できないため、bash3連想配列を使用する必要があります。

4

1 に答える 1

1

これは、通常の(整数)インデックス付き配列です。置き換える正しいインデックスを見つけるには、それを繰り返す必要があります。(これは、インデックスが既存の配列の終わりを超えているため、新しい要素を追加する場合にも機能します。)

for ((i=0; i<${#ARRAY[*]}; i++)); do
    [[ ${ARRAY[i]} = louis:* ]] && break
done
ARRAY[i]=louis:green
于 2012-07-30T03:55:40.103 に答える