̃Gg[͂ĂȃubN}[Nɒlj

Unix :: zshとbashの変数展開の違い



変数 $var の値の先頭2文字目から3文字を切り出す

bash の挙動
% bash
$ var=12345; echo ${var:1:3}
234
期待通りの結果


zsh の挙動
% zsh
% var=12345; echo ${var:1:3}
zsh: unrecognized modifier `1'
おこられる。記法が違うらしい。


試行錯誤しているうちに、下記にたどり着いた。

% var=12345; echo $var[1,3]
123

切り出しに成功したが、「2文字目から3文字」の意味を込めて書いたはずなのに「1文字目から3文字」の結果になった。


% var=12345; echo $var[0,3]
123

これでも、「1文字目から3文字」の結果になった。


「2文字目から3文字」は当然こう↓

% var=12345; echo $var[2,3]
23

だと思ったら、「2文字目から3文字目まで」だった。


要求を満たすには

% var=12345; echo $var[2,4]
234

が正解。 zsh の場合は、 $var[開始文字位置,終了文字位置] ということらしい。




unix/zsh/diff_zsh_bash.txt