揮発性のメモ2

http://d.hatena.ne.jp/iww/

bashで配列

dashには配列がない。

配列宣言、初期化

$ A=()
$ B=(111 "HOGE" 333)
$ C[1]=jikken

()をつけて並べて書くと、添え字0から順につっこまれる

素数

$ echo ${#B[@]}
3
$ echo ${#C[*]}
1

@でも*でもどっちでもいい。

要素の取り出し

$ echo ${B[@]}
111 HOGE 333

並び順はよくわからない。
添え字が数字の分については、だいたい添え字の昇順に並んでいる。
ハッシュ宣言した分も

$ B=(1,"HOGE",3)
$ echo ${B[@]}
1,HOGE,3
$ echo "${#B[@]}"
1

区切るのはホワイトスペースで。カンマでは区切れないので注意する

配列の代入、取り出し(いっこずつ)

$ A[2]="123"
$ echo ${A[2]}
123

$ I=2
$ echo ${A[$I]}
123

ダメな例
$ echo $A[2]
[2]

変数を { } でくくらないとかっこが文字列扱いで認識されるので注意する

配列の取り出し(まとめて、連続で)

配列を使った演算

$ [ "${A[$I]}" = "123" ] && echo YEAH!
YEAH!

$ A[$I]=$((A[$I]+2))
$ echo ${A[$I]}
125

かっこがどこまで必要かわからなくなるのでメモ






注意事項

すでに存在する配列に対して連想配列宣言はできない

$ Array[1]="1"
$ declare -A Array
-bash: declare: Array: cannot convert indexed to associative array

$ unset Array
$ declare -A Array
$