♣️
【シェル】${##}、${%}(変数内の文字列一致削除)
概要
bashのシェル組み込み機能で、前方一致削除・後方一致削除のメモ
🌵前 方一致削除 ${##}
変数を前方から確認し、最後に見つかった文字列まで削除
$ HOGE="hogehoge/foofoo/barbar"
$ echo ${HOGE}
hogehoge/foofoo/barbar
☆ 変数が格納されていることを確認
$ echo ${HOGE##*foo}
/barbar
☆ 文字列の前方から最後のfooまで削除
$ echo ${HOGE##*/bar}
bar
☆ 文字列の前方から/barまでが削除
🌵後 方一致削除 ${%}
変数を後方から確認し、最初に見つかった文字列まで削除
$ META="hogehoge/fugafuga/piyopiyo"
$ echo ${META}
hogehoge/fugafuga/piyopiyo
☆ 変数が格納されていることを確認
$ echo ${META%fuga*}
hogehoge/fuga
☆ 文字列の後方から最初のfugaまでが削除
$ echo ${META%/fuga*}
hogehoge
☆ 文字列の後方から最初(というか一つしかない)/fugaまでが削除
🌵使い方
スクリプト名を標準出力するスクリプト
$ cat hoge.sh
#!/bin/bash
echo "スクリプトのパス"
echo -e "${0}"\\n
echo "スクリプトの名前取り出し"
echo -e "${0##*/}"\\n
echo "スクリプトのパス取り出し"
echo "${0%/*}"
スクリプト実行結果
$ bash /tmp/tmp1/tmp2/hoge.sh
スクリプトのパス
/tmp/tmp1/tmp2/hoge.sh
スクリプトの名前取り出し
hoge.sh
スクリプトのパス取り出し
/tmp/tmp1/tmp2
Discussion