MB blog

ちょっぴりテクニカルな話題のメモです。

シェルスクリプトで配列へのpush/pop


スポンサードリンク

配列listに値varをpush

n=${#list[@]}
list[$n]=$var

配列のサイズを添字として、新たな要素を追加しているだけ。シェルスクリプトの配列のインデックスは0からです。
問題は、popです。

配列listから値varをpop

n=`expr "${#list[@]}" - 1`
var=${list[$n]} 
unset list[$n]
list=${list[@]}

"unset"は、配列の指定した要素を削除します。しかし、同時にインデックスは削除されず、空要素として残ってしまいます。
そのため、最後に別の配列に入れ直して、リセットする必要があります。