csh/tcsh如何找到如果一个特定的字符串是在一个变量/文件名?



我想检查一个特定的字符串是否在文件名(这是一个变量)中。(在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模式,类似于

相关内容

  • 没有找到相关文章

最新更新