・bash の =~

授業で使えるかな,と fedora core5 の /etc/rc.d/rc.sysinit を読んでたら,

# Print a text banner.
echo -en $"\t\tWelcome to "
read -r redhat_release < /etc/redhat-release
if [[ "$redhat_release" =~ "Red Hat" ]]; then
[ "$BOOTUP" = "color" ] && echo -en "\\033[0;31m"
echo -en "Red Hat"

なんて表現を発見.=~ は文字列のパターンマッチみたいなんだけど,「bash にこんな機能あったっけ?」と bash のマニュアルをあれこれ眺めてみたけど それらしい記述は見当たらず.

よく分からんなぁ,,と,手元の /usr/share/doc/bash/NEWS.gz を見ると, "New Features in Bash" として

cc. The [[ ... ]] command has a new binary `=~' operator that performs
    extended regular expression (egrep-like) matching.

dd. `configure' has a new `--enable-cond-regexp' option (enabled by default)
    to enable the =~ operator and regexp matching in [[ ... ]].

ee. Subexpressions matched by the =~ operator are placed in the new
    BASH_REMATCH array variable.

なんてのが上げられていて,bash-3.0 の新機能なのか,ということで納得.

確かに条件式の中で文字列のパターンマッチが書けるのはすごく魅力的なんだ けど,bash-3.0 以上限定になるというのはちょっと悩ましいところだなぁ.

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-12-17 (金) 16:35:41