echo ${array[0]}
で出力される結果がshellによっては必ずしも望んだものにはならないという話
要するに配列のインデックスの開始がshellの種類によって0だったり1だったりするということです。
複数のshellを使う人には当たり前の知識かもしれませんが、私には新鮮だったのでメモ。
sh
sh-3.2$ array=(0 1 2 3) sh-3.2$ echo ${array[*]} 0 1 2 3 sh-3.2$ echo ${array[0]} 0 sh-3.2$ echo ${array[1]} 1
bash
CORDEA@macrou:~$ array=(0 1 2 3) CORDEA@macrou:~$ echo ${array[*]} 0 1 2 3 CORDEA@macrou:~$ echo ${array[0]} 0 CORDEA@macrou:~$ echo ${array[1]} 1
zsh
CORDEA@macrou% array=(0 1 2 3) CORDEA@macrou% echo ${array[*]} 0 1 2 3 CORDEA@macrou% echo ${array[0]} CORDEA@macrou% echo ${array[1]} 0
csh
[CORDEA@macrou ~]$ set array = ( 0 1 2 3 ) [CORDEA@macrou ~]$ echo ${array[*]} 0 1 2 3 [CORDEA@macrou ~]$ echo ${array[0]} [CORDEA@macrou ~]$ echo ${array[1]} 0
tcsh
[CORDEA@macrou ~]$ set array = ( 0 1 2 3 ) [CORDEA@macrou ~]$ echo ${array[*]} 0 1 2 3 [CORDEA@macrou ~]$ echo ${array[0]} [CORDEA@macrou ~]$ echo ${array[1]} 0
ksh
$ array=(0 1 2 3) $ echo ${array[*]} 0 1 2 3 $ echo ${array[0]} 0 $ echo ${array[1]} 1