免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3953 | 回复: 10

expr为啥没有识别出来 [复制链接]

论坛徽章:
0
发表于 2011-07-14 15:22 |显示全部楼层
本帖最后由 lilysulia 于 2011-07-14 15:23 编辑

pic文件内容为,abc  tmp_abc 两个文件  

for loop in `ls $pic`
          do
                  pic_name[$i]=$loop
                  tmp=`echo $loop | awk '{if($0 ~ /^tmp/) print 5}'`
                  if [ "$tmp" -eq  "5" ];then
                          flag=$i
                          continue
                  else
                          echo "--------------\n"
                          base_name=`echo ${loop%%.*}`
                  fi
                  i=`expr $i + 1`
46          done
请大家注意一下这个地方 i=`expr $i + 1`为什么这句中的expr没有识别出来,当执行该程序时还会出现
./updata.sh: 46: pic_name[1]=test1.gif: not found
[: 46: Illegal number:
--------------

./updata.sh: 46: pic_name[1]=tmp_test1.gif: not found
./updata.sh: 62: Bad substitution
请大家看看问题所在

论坛徽章:
0
发表于 2011-07-14 15:31 |显示全部楼层
为什么有时候i=`expr $i + 1` 中的expr 不能识别出来呢,

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
发表于 2011-07-14 15:36 |显示全部楼层
回复 2# lilysulia


    没怎么看明白你的问题:
expr没识别出来可能是匹配到tmp了,循环被continue了

还有,"$tmp" -eq "5" 应该会报错吧

论坛徽章:
0
发表于 2011-07-14 15:51 |显示全部楼层
是报错了,楼上真是太神了,这个改过了

论坛徽章:
0
发表于 2011-07-14 15:53 |显示全部楼层
也就是expr没有变色,并且这个自增语句也没有被执行。

论坛徽章:
0
发表于 2011-07-14 15:57 |显示全部楼层
本帖最后由 lilysulia 于 2011-07-14 16:00 编辑

for loop in `ls $pic`
        do
                pic_name[$i]=$loop
                tmp=`echo $loop | awk '{if($0 ~ /^tmp/) print 5}'`
                if [ -z "$tmp" ];then
                        tmp=0
                fi

                if [ "$tmp" -eq  "5" ] ;then
                        flag=$i
                else
                        echo "--------------\n"
                        base_name=`echo ${loop%%.*}`
                fi
                                i=`expr $i +1`
        done
首先这个程序出现的问题是在 i=`expr $i +1`这个语句中,expr并没有像其他系统保留关键字一样变色,而是颜色没有任何变化,然后这句也没有执行
运行后出现的错误是:
./updata.sh: 50: pic_name[1]=test1.gif: not found
--------------

./updata.sh: 50: pic_name[1]=tmp_test1.gif: not found
请问not found 是什么意思

论坛徽章:
0
发表于 2011-07-14 16:32 |显示全部楼层
请帖代码模式
  1. i=`expr $i + 1`
复制代码
少个空格吧

论坛徽章:
0
发表于 2011-07-14 17:16 |显示全部楼层
没有的,我检查了好几遍

论坛徽章:
0
发表于 2011-07-14 17:49 |显示全部楼层
回复 1# lilysulia

try:
     i=$(($i + 1))

论坛徽章:
0
发表于 2011-07-14 19:17 |显示全部楼层
let i++
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会

【架构革新 高效可控】2020年12月21日-23日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP