「#」や「##」を使った「前方一致削除」
「%」や「%%」を使った「後方一致削除」
です。
変数の値の一部削除については、
⇒ こちらの記事をご覧ください。
今回は、変数の値(文字列)の一部分の取り出しについてです。
「文字列の一部分の取り出し」のことを、「切り出し」っていう表現を使うようです(業界用語か?)。

基本は、
${変数名:数値:長さ}
英語版のmanページの表現では、
${parameter:offset:length}
です。
${変数名:数値:長さ} と書くことによって、「数値」の位置から「長さ」の分だけ、文字列の一部を取り出すことができます。
なお、「数値」は、配列のインデックスと同じく、0から数える点に注意が必要です。つまり、1文字目は「0」で、2文字目が「1」です。
私はまだ実際に使用したことはありませんが、これはなかなか便利そうです。いったん覚えたら、おそらく頻繁に使用することになるでしょう。
具体的な例は、次のとおりです。
namae=goosyun ; echo ${namae:3:4}
を実行すると、
syun と出力されます。
namae=goosyun ; echo ${namae:0:3}
だと、goo となります。
${変数名:数値:長さ}のうち、「長さ」を省略して、${変数名:数値}とすると、数値の位置から末尾までに展開されます。
namae=goosyun ; echo ${namae:3}
の実行で、syun と出力されます。
つまり、4文字目から末尾までの文字列が取り出されます。
ちなみに、前方一致削除の#を使い、
namae=goosyun ; echo ${namae#goo}
としても、同じ実行結果 syun が出力されます。
それでは、また次の記事で
■■■■ goosyun ■■■■