[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