Bashシェルスクリプトで変数からパターンに合致した文字列を除去する(dirname、basenameの代替として利用可能)
はじめに
いつも前方から除去するのか、後方から除去するのかごっちゃになっています ^^;
たとえばファイルのフルパスからファイル名だけを取得する場合。 basename
コマンドや dirname
コマンドを使えば解決なのだが、これらを使わない場合について紹介します。
検証環境
コマンド
${変数名##pattern}
で、 前方一致 でパターンにマッチした文字列を除去した結果を取得できる。 #
だと貪欲でない(最短一致)検索、 ##
だと貪欲な検索が行われる。${変数名%%pattern}
で、 後方一致 になる。 %
だと貪欲でない(最短一致)検索、 %%
だと貪欲な検索が行われる。
ひとこと
覚えにくいですが、以下のように覚えると良いです。
#
はコメントアウトでよく使われるため前方一致、 %
は除算に使われるため後方一致。
ディスカッション
コメント一覧
まだ、コメントがありません