免费注册 查看新帖 |

Chinaunix

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

expr: syntax error [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-12 15:50 |只看该作者 |正序浏览
各位大虾。小弟遇到一个问题,请各位指教。这个问题是关于在shell环境下expr用法的,
在aix环境和solorias环境下的输出结果不同。详细如下:

aix环境:
$ len='abcdefg' export len
$ echo $len
abcdefg
$ ll=`expr length $len`
$ export ll
$ echo $ll
7
$ uname
AIX

solorias环境:
bash-3.00$ len='abcdefg' export len
bash-3.00$ echo $len
abcdefg
bash-3.00$ ll=`expr length $len` export ll
expr: syntax error
bash-3.00$ uname
SunOS

各位大虾能给小弟讲讲为什么会这样吗?谢谢。

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
16 [报告]
发表于 2009-06-15 09:53 |只看该作者

回复 #14 chen_hy 的帖子

直接echo ${#len}就行了

论坛徽章:
0
15 [报告]
发表于 2009-06-15 09:41 |只看该作者
解决了。谢谢lululau。

bash-3.00$ echo $len
abcdefg
bash-3.00$ ll=`expr "$len" : '.*'`
bash-3.00$ echo $ll
7

论坛徽章:
0
14 [报告]
发表于 2009-06-15 09:18 |只看该作者
大虾,那要怎么改呢?

论坛徽章:
0
13 [报告]
发表于 2009-06-13 11:54 |只看该作者
  1.   3.   The following example returns the number of characters in variable a.
  2.                 expr $a : '.*'
复制代码

论坛徽章:
0
12 [报告]
发表于 2009-06-13 11:50 |只看该作者
汗。。。是"expr length $var"这句的问题啊

论坛徽章:
0
11 [报告]
发表于 2009-06-12 16:57 |只看该作者

回复 #8 lululau 的帖子

man了一下expr,得到如下的一个例子:
bash-3.00$ a=1 export a
bash-3.00$ echo $a
1
bash-3.00$ a=`expr $a + 1` export a
bash-3.00$ echo $a
2
对比了一下,好像我这边也没有用错。

论坛徽章:
0
10 [报告]
发表于 2009-06-12 16:53 |只看该作者

回复 #9 我是DBA 的帖子

我的环境下还是不行。

bash-3.00$ bash
bash-3.00$ len='abcdefg' export len
bash-3.00$ ll=`expr length $len` export ll
expr: syntax error
bash-3.00$ ksh
$ len='abcdefg' export len
$ ll=`expr length $len` export ll
expr: syntax error
$ uname
SunOS

论坛徽章:
0
9 [报告]
发表于 2009-06-12 16:29 |只看该作者

回复 #7 chen_hy 的帖子

不是,支持的
[root@localhost ~]# ll=`expr length $len` export ll
expr: syntax error
[root@localhost ~]#
[root@localhost ~]# len='abcdefg' export len
[root@localhost ~]# ll=`expr length $len` export ll
[root@localhost ~]# echo $ll
7

论坛徽章:
0
8 [报告]
发表于 2009-06-12 16:27 |只看该作者
很多命令在不同的系统上的用法是不一样的
BSD的expr命令和GNU的就不一样
你可以man一下看看,solaris上面的expr是怎么用的
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP