Bash の 変数展開

Bash の 変数展開には結構種類があります。

よく使うのは次の「文字列の末尾から最短マッチさせて削除」で 「ファイルの拡張子」の削除です。

$ ls *.txt | while read FILE
> do
>     echo ${FILE%.txt}
> done

"${FILE%.txt}" の部分が変数展開です。 これで ls コマンドで .txt のファイルだけを取得して ファイル名から .txt を削除した部分を出力することができます。

変数展開には次のようなものがあります。

${変数:+文字列} 変数が存在し空でなければその文字列、それ以外なら空
${変数:-文字列} 変数が存在し空でなければその値、それ以外なら文字列
${変数:=文字列} 変数が存在し空でなければその値、それ以外なら変数に文字列を設定
${変数:?文字列} 変数が存在し空でなければその値、それ以外なら文字列を出力して終了
${変数:位置} 位置から末尾までの部分文字列
${変数:位置:長さ} 位置から長さ分の部分文字列
${変数#パターン} 変数の先頭がパターンマッチした場合、最短マッチ部分を削除
${変数##パターン} 変数の先頭がパターンマッチした場合、最長マッチ部分を削除
${変数%パターン} 変数の末尾がパターンマッチした場合、最短マッチ部分を削除
${変数%%パターン} 変数の末尾がパターンマッチした場合、最長マッチ部分を削除
${変数/パターン/文字列} 最初にパターンマッチした部分を文字列で置換
${変数//パターン/文字列} パターンマッチしたすべての部分を文字列で置換

Bash だけでも色々なことができます。

Google サイト内検索

Amazonアソシエイト