[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:13747] Re: bug-ja
debian-usersの皆様、こんにちは。おしずみ@NECです。
Included-Message:
Message-ID: <19990316221538Y.arafune@debian.or.jp>
Written-By: arafune@debian.or.jpさん
Subject: [debian-users:13725] Re: bug-ja
> 荒船です.
:
:
> osshy> なんで、[A|B|C...|Z]と[A_Z]は別物です、と云う事です。
> osshy> 正確には、
>
> osshy> 「[A-Z])」=「A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z)」
>
> osshy> だと思います。つまり、右辺は鈎括弧が不要になります。
> osshy> 鍵括弧つきの場合何にマッチするかは、ちょっと見当がつきませんが。
余談ですが、Solarisの/bin/shでは、[A|B|C]) は、
'[A'、'B'、'C]'の3つにマッチしてました。 # ベ、ベタな・・・
shellのコマンドライン解釈と同様?、「|」の優先順位が高い様です。
# と云うか、コマンドライン用パーサを使い回している?
> えーと.ところがです./usr/bin/bug の line 200 の
> [A-Z]
> を(このままだと Bug#33822と同様のエラー)
> A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z)
> とするとエラーなく動きました.
> ということは,
> 1) 実は,[A-Z]) ≠ A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z)
> 2) そもそも, sh と bash では違う.
> のどちらなんでしょうか?
う〜ん。
1) 本来、[A-Z]) = A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z)
であるべき。
2) けれどbashのバグで「≠」 になってしまう。で、これがまさにBug#33822。
ではないかと思うのですが・・・
> あっ.あと質問2つほど
> 1) 結局 bash で 正規表現は使えるんですか?
bashのman(hammです)を見てみましたが、
case word in [ ( pattern [ | pattern ] ... ) list ;; ] ... esac
A case command first expands word, and tries to match
it against each pattern in turn, using the same match-
ing rules as for pathname expansion (see Pathname
Expansion below).
となっていましたので、
あくまで"pathname expansion"であって、正規表現は使えない
ではないでしょうか。
つまり、case文のパターンの定義に関してはshとbashは同じ、
或は、少なくともbash側は同じ仕様にするつもりでいる、と思います。
で、bashのバグで結果的に不一致になっている、と・・・
推測ばかりで申し訳ありませんが、思い付くのはこんな所です。
- osshy@xxxxxxxxxxxxx