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

String tcsh中的字符串/子字符串匹配,string,comparison,substring,tcsh,String,Comparison,Substring,Tcsh,我正在努力尝试使用一个简洁的比较语句来避免一大堆“如果a=b或a=c或a=d或a=e”等等 相反,我尝试使用正则表达式和模式匹配,就像在perl中一样 与 set st=“红色” 线路 如果($st=~黄色|蓝色|红色|绿色) 只是不起作用(如果:表达式语法。) 我尝试使用引号和括号,但如果没有错误,我永远不会得到预期的结果 有没有办法避免重型结构: 如果($st==黄色)| |($st==蓝色)| |($st==红色)| |($st==绿色) 或者以另一种方式问同样的问题:tcsh是否允许类似

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

相反,我尝试使用正则表达式和模式匹配,就像在perl中一样

set st=“红色”

线路

如果($st=~黄色|蓝色|红色|绿色)

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

有没有办法避免重型结构:

如果($st==黄色)| |($st==蓝色)| |($st==红色)| |($st==绿色)

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


万分感谢

我不知道tsch,但查看本页信息(特殊字符下): 看起来你需要用大括号把颜色围起来:

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

~=
操作符右侧的东西是“glob模式”,而不是正则表达式。(例如,在regexp中,
匹配任何字符,
*
匹配零个或多个任意字符;全局模式等价物为
*

{…,…,…}
是glob模式语法的一部分<代码>手动tcsh获取完整说明


如果需要匹配正则表达式,可以使用
expr
命令
man expr
info expr
了解详细信息。

Wow,这确实有效!我尝试了花括号,但缺少的是值之间的“,”分隔符:-/一直尝试使用管道字符。非常感谢。谢谢强制链接:。