我想检查一个特定的字符串是否在文件名(这是一个变量)中。(在csh/tcsh)
#!/bin/tcsh
set file = 'KZ.KKAR..BHZ.2008-01-18T19-16-51.SAC'
set string = 'BHZ'
echo $file
if [[$file == *$string*]];then
echo 'string contains in this'
else
echo "NOOOOOOOOO"
endif
像这样。或在一行代码中,如果可能的话
您可以使用=~
来匹配全局模式:
if ( $file =~ *$string* ) then
注意[[..]]; then
是无效的(t)csh语法;这只适用于Bourne shell。
man tcsh
:
The '==' !=' '=~'和'!~’操作符将它们的参数作为字符串进行比较;所有还有一些是数字运算。运算符"=~"one_answers"!"~"are like"!='和'=='除了右边是一个全局模式(参见文件名替换)匹配左操作数的对象。这减少了使用的需要当真正需要时,在shell脚本中切换内置命令是模式匹配。
正如文档所提到的,switch
也可以使用glob模式,类似于