免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(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
2 [报告]
发表于 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
3 [报告]
发表于 2011-07-14 15:36 |只看该作者
回复 2# lilysulia


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

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

论坛徽章:
0
4 [报告]
发表于 2011-07-14 15:51 |只看该作者
是报错了,楼上真是太神了,这个改过了

论坛徽章:
0
5 [报告]
发表于 2011-07-14 15:53 |只看该作者
也就是expr没有变色,并且这个自增语句也没有被执行。

论坛徽章:
0
6 [报告]
发表于 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
7 [报告]
发表于 2011-07-14 16:32 |只看该作者
请帖代码模式
  1. i=`expr $i + 1`
复制代码
少个空格吧

论坛徽章:
0
8 [报告]
发表于 2011-07-14 17:16 |只看该作者
没有的,我检查了好几遍

论坛徽章:
0
9 [报告]
发表于 2011-07-14 17:49 |只看该作者
回复 1# lilysulia

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

论坛徽章:
0
10 [报告]
发表于 2011-07-14 19:17 |只看该作者
let i++
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP