我在某个地方做错了我想请让我知道。正则表达式存在一些问题。
#!/bin/ksh
file="11111111_111.XXXX"
# file="11111111_111.XXX"
case $file in
/[0-9]*\_.*\.XXXX/)
echo "Inside SFTP"
;;
[0-9]{8}_\d*\.XXX)
echo "Inside WHS"
;;
*)
echo "There is no file"
;;
esac
答案 0 :(得分:0)
案例模式不是bash中的正则表达式。它们根据“路径名扩展”的规则进行扩展。执行man bash
并搜索该短语以查看详细信息。
答案 1 :(得分:0)
<强> EDITED 强>
有不同版本的ksh,语法不同。匹配与file name patterns匹配,这与其他语言的正则表达式不同。我发现以下模式适用于Linux和AIX:
+([0-9])_+([0-9]).XXXX
在最低公共级别,不支持\d
等字符类或匹配数{n}
,因此如果要匹配八位数,则需要输入{{ 1次}八次。