csh if 正则
参考博客:https://linux.cn/article-6941-1.html
这里面说明了或者的那个竖线 | 需要转移
参考博客:https://www.runoob.com/linux/linux-comm-grep.html
这里面说明了grep -c 是匹配成功的个数
参考博客:https://www.jb51.net/article/57770.htm
这里面说明了csh 什么时候是把 写的东西当命令来运行,什么时候当表达式判断。
以现在我的理解是 小括号是判断表达式,大括号是运行命令
目前直接正则如果简单还可以,像下面这种带或的,就不行。就得用grep才能保证正确性了。
其中表达式需要用双引号括起来,并且竖线需要转移,括号也需要转移
下面是测试使用的case
#!/bin/csh
# set s="/home/user/src/hello"
set s="/home/user/s"
echo ${s}
if {(echo ${s} | grep -c "\(^/home/user/src*\)\|\(^/etc/user/src/*\)")} then
echo "success!"
else
echo "failed!"
endif
echo "/home/user/src/hello" | grep -c "^/home/user/src*\|^/etc/user/src/*"
echo ${s} | grep -c "\(^/home/user/src*\)\|\(^/etc/user/src/*\)"
if ( ${s} =~ "\(^/home/user/src*\)\|\(^/etc/user/src/*\)" ) then
echo "success!"
else
echo "failed!"
endif
if ( ${s} =~ ^/home/user/src*\|^/etc/user/src/* ) then
echo "success!"
else
echo "failed!"
endif