Bash の 変数展開には結構種類があります。
よく使うのは次の「文字列の末尾から最短マッチさせて削除」で 「ファイルの拡張子」の削除です。
$ ls *.txt | while read FILE > do > echo ${FILE%.txt} > done
"${FILE%.txt}" の部分が変数展開です。 これで ls コマンドで .txt のファイルだけを取得して ファイル名から .txt を削除した部分を出力することができます。
変数展開には次のようなものがあります。
${変数:+文字列} | 変数が存在し空でなければその文字列、それ以外なら空 |
---|---|
${変数:-文字列} | 変数が存在し空でなければその値、それ以外なら文字列 |
${変数:=文字列} | 変数が存在し空でなければその値、それ以外なら変数に文字列を設定 |
${変数:?文字列} | 変数が存在し空でなければその値、それ以外なら文字列を出力して終了 |
${変数:位置} | 位置から末尾までの部分文字列 |
${変数:位置:長さ} | 位置から長さ分の部分文字列 |
${変数#パターン} | 変数の先頭がパターンマッチした場合、最短マッチ部分を削除 |
${変数##パターン} | 変数の先頭がパターンマッチした場合、最長マッチ部分を削除 |
${変数%パターン} | 変数の末尾がパターンマッチした場合、最短マッチ部分を削除 |
${変数%%パターン} | 変数の末尾がパターンマッチした場合、最長マッチ部分を削除 |
${変数/パターン/文字列} | 最初にパターンマッチした部分を文字列で置換 |
${変数//パターン/文字列} | パターンマッチしたすべての部分を文字列で置換 |
Bash だけでも色々なことができます。