わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

部分文字列を得る方法がbashとzshで違う

2008年になりました.今年もよろしくお願いいたします.
特に書くこともないので,ネタ帳を見てみると,zshで部分文字列を得る方法が分からず,bashでのやり方(zshでは使えない)をメモしていました.
もう少し調べてみると,ここにそのものずばりの回答がありました.
試してみます.まずはbash

$ bash --version
GNU bash, version 3.2.3(5)-release (i686-pc-cygwin)
Copyright (C) 2005 Free Software Foundation, Inc.
$ message='Happy New Year'
$ echo $message
Happy New Year
$ echo ${message:10:4}
Year
$ echo $message[11,14]
Happy New Year[11,14]

次にzsh

$ zsh --version
zsh 4.3.2 (i686-pc-cygwin)
$ message='Happy New Year'
$ echo $message
Happy New Year
$ echo $message[11,14]
Year
$ echo ${message:10:4}
zsh: unrecognized modifier `1'

結論.

  • bashでは「${変数名:開始位置:文字数}」.開始位置は0オリジン*1
  • zshは「$変数名[開始位置,終了位置]」.開始位置と終了位置は1オリジン.