在tcsh中匹配的字符串/子字符串

Mad*_*acs 2 string comparison substring tcsh

我正在努力尝试使用简洁的比较语句来避免一堆"如果a = b或a = c或a = d或a = e"等.

相反,我正试图像在perl中那样使用正则表达式和模式匹配.

设置st ="红色"

这条线

if($ st = ~yellow | blue | red | green)

只是不起作用(如果:表达式语法.)我尝试使用引号,括号,但我没有得到预期的结果,如果没有错误.

有没有办法避免沉重的构造:

if($ st == yellow)|| ($ st == blue)|| ($ st == red)|| ($ st ==绿色)?

或者另一种问同样问题的方法:tcsh是否允许类似"如果字符串a包含字符串b"?我在tcsh引用中找不到任何子字符串的概念.

太感谢了!

Ger*_*rat 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})
Run Code Online (Sandbox Code Playgroud)


Kei*_*son 5

~=操作符右侧的东西是"glob-pattern",而不是正则表达式.(例如,在regexp .匹配任何字符,并.*匹配零个或多个任意字符; glob-pattern等价物是?*.)

{...,...,...}是glob-patterns语法的一部分. man tcsh完整的描述.

如果需要匹配正则表达式,可以使用该expr命令; man expr或者info expr有关细节.