我尝试将用户输入的字符串与特定模式匹配,确切地说,我想检查字符串是否以大写字母开头,然后继续使用任何大写小写字母或数字。我想在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;部分。 非常感谢您的帮助!
答案 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
请注意,正则表达式也需要修复。