シェルスクリプトでsubstring

なるべく外部コマンドを使わずにやってる。(例えばbasenameの代わりに${foo##*/}など)
変数の先頭文字を取り出す方法

       ${parameter:offset}
       ${parameter:offset:length}
% /bin/bash -c 'foo=abcde ; echo ${foo:0:1}'
a
% /bin/zsh -c 'foo=abcde ; echo ${foo:0:1}'
zsh:1: unrecognized modifier `0'

素のshで使えるかどうかは知らない。
けど良く触れるシステムの/bin/shは大体/bin/bashなので、
自分ルール的に使っても良いことにする。