2011-01-06 17 views
2

私はたくさんのを避けるために、簡潔な比較ステートメントを使用しようと苦労している「場合= bまたは= cまたは= Dまたは= E」など、/ストリングtcshの

代わりに、私はあなたがperlのように正規表現とパターンマッチングを使用しようとしています。

セットST = "赤" と

ライン

($ ST =〜黄|青|赤|緑)であれば

ちょうど動作しません(場合:式の構文。) 私は引用符で試しましたs、かっこ、しかし、エラーがなければ、私は期待された結果を得ることはありません。

は重い構造を回避する方法があります:

場合($ ST ==黄色)|| ($ st == blue)|| ($ st == red)|| ($ st == green)?

同じ質問をする別の方法:tcshは「文字列aに文字列bが含まれている」のようなものを許可しますか?私はtcshのリファレンスで部分文字列の概念を見つけることができませんでした。

ありがとうございます!

+0

必須のリンク:[Csh Programming Considered Harmful](http://www.perl.com/doc/FMTEYEWTK/versus/csh.whynot)。 –

答えて

6

私はTSCHを知っているが、(特殊文字の下)このページの情報を見ていません:http://www.tcsh.org/tcsh.html/Filename_substitution.html http://www.cs.duke.edu/csl/docs/csh.html あなたがかっこを使用して色を囲む必要があることが表示されます:

if ($st =~ {yellow,blue,red,green}) 
+0

うわー、これは本当に機能します!私は中かっこを試しましたが、欠けていたものは値の間の区切り文字です: - /パイプ文字で試してみましょう。 非常に高く評価されています。ありがとう! – MadMacs

5

~=オペレータの右側にあるものは、「glob-pattern」であり、ではなく、の正規表現です。 (例えば、正規表現に.任意の文字にマッチし、かつマッチ.*ゼロ以上の任意の文字、グロブパターン同等物は?*ある。)

{...,...,...}はグロブパターンの構文の一部です。詳細な説明はman tcshを参照してください。

正規表現と一致する必要がある場合は、exprコマンドを使用できます。詳細はman exprまたはinfo exprをご覧ください。