检查字符串是否与tcsh中的某个模式匹配

时间:2015-05-17 18:16:45

标签: tcsh

我尝试将用户输入的字符串与特定模式匹配,确切地说,我想检查字符串是否以大写字母开头,然后继续使用任何大写小写字母或数字。我想在tcsh中执行此操作,我知道bash最好使用,但我必须使用tcsh。

所以基本上我想在tcsh中使用以下内容:

if [[ $name =~ ^[A-Z][A-Za-z0-9]*$ ]]

到目前为止,这是我的代码:

    #!/bin/tcsh
    set name
    while ( $name == "" )
       echo 'Give an account name!'
       set name = $<
       if ( $name =~ '^[A-Z][A-Za-z0-9*$]' ) then
           echo 'Name accepted!'
       else
           echo 'Not correct format!'
           set name = ""
       endif
    end

我不断在&#34;其他&#34;部分。 非常感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

使用=〜比较运算符时,右侧必须是可能包含星号或问号通配符的模式(如文件匹配),但不包括RegEx。

这是我提出的解决方法......

#!/bin/tcsh
set name
while ( $name == "" )
    echo 'Give an account name!'
    set name = $<

    set cond = `expr $name : '^[A-Z][A-Za-z0-9]*$'`
    set n = `echo $name | wc -c`
    @ n--

    if ( $cond == $n ) then
        echo 'Name accepted!'
    else
        echo 'Not correct format!'
        set name = ""
    endif
end    

请注意,正则表达式也需要修复。