shell字符串模糊匹配

有31张套表,表结构均相同,放在tables.txt里维护(txt还有几百张其它表)table_name01table_name02**************table... 有31张套表,表结构均相同,放在tables.txt里维护(txt还有几百张其它表)
table_name01
table_name02
**************
table_name31

#依次取出31表的最大id值
for tbl in `cat tables.txt`
do
if [$tbl = table_name*]; then
maxid='db2 -x "select max(id) from $tbl"'
done

条件的模糊判断有问题,网上搜的[[ ]]用法根本不行啊,如何写判断条件使期满足模糊匹配????

字符串比较
= 等于,如:if [ "$a" = "$b" ]
== 等于,如:if [ "$a" == "$b" ],与=等价
注意:==的功能在[[]]和[]中的行为是不同的,如下:
1 [[ $a == z* ]] # 如果$a以"z"开头(模式匹配)那么将为true
2 [[ $a == "z*" ]] # 如果$a等于z*(字符匹配),那么结果为true
3
4 [ $a == z* ] # File globbing 和word splitting将会发生
5 [ "$a" == "z*" ] # 如果$a等于z*(字符匹配),那么结果为true
展开
 我来答
百度网友5311d79
2013-08-16 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3140万
展开全部
for tbl in `cat tables.txt`
do
   if [[ $tbl =~ table_name\d* ]]; then
      maxid=`db2 -x "select max(id) from $tbl"`
   fi
done

这是正则匹配。\d在正则中表示数字类,*表示出现0次或多次。

方括号与中间的判断表达式之间也是有空格滴。

更多追问追答
追问
=~ 系统提示语法错误
追答

我是跑通过的,事实说话:


请确保你使用的是双方括号:[[  ]]

有错误提示的话请放上来看看,才好分析。

TableDI
2024-07-18 广告
当使用VLOOKUP函数进行匹配时,如果结果返回“#N/A”错误,这通常意味着在查找表中未找到与查找值相匹配的项。可能的原因有:查找值拼写错误、查找表的范围不正确、查找值不在查找列的列、查找表未进行绝对引用导致范围变动等。为了解决这个问题,... 点击进入详情页
本回答由TableDI提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式