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引用中找不到任何子字符串的概念.
太感谢了!
我不知道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)
~=操作符右侧的东西是"glob-pattern",而不是正则表达式.(例如,在regexp .匹配任何字符,并.*匹配零个或多个任意字符; glob-pattern等价物是?和*.)
{...,...,...}是glob-patterns语法的一部分. man tcsh完整的描述.
如果需要匹配正则表达式,可以使用该expr命令; man expr或者info expr有关细节.