免费注册 查看新帖 |

Chinaunix

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

关于bash里数值循环的一个疑问 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-04-01 12:32 |只看该作者 |倒序浏览
今天在看书的时候,遇到一个数值循环的例子,在Ubuntu里结果总是不正确,在Sco Unix里才正确。

数值循环的例子:

#LOOP=1

#LOOP=`expr $LOOP + 1`

在Ubuntu里,echo $LOOP,结果总为 1+1,在Sco Unix里,结果才为2



查看了下各自当前用户的SHELL版本:echo $SHELL

Ubuntu :/bin/bash  (非root用户)

Sco Unix:/bin/sh

参考网上搜索的部分资料:



在一般的linux系统当中(如redhat),使用sh调用执行脚本相当于打开了bash的POSIX标准模式(等效于bash的 --posix 参数)

一般的,sh是bash的“子集”。



既然这样,那为啥在Ubuntu里不正确,在Sco Unix中是正确的呢?



另:

Ubuntu查看PASSWD文件,看到root用户的shell也是/bin/bash,登录root用户后,发现返回的结果是正确的,2。



真奇怪。。有没人能解释下。。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2011-04-01 12:41 |只看该作者
$ LOOP=1
$ LOOP=`expr $LOOP + 1`
$ echo $LOOP
2
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 10.10
Release:        10.10
Codename:       maverick

论坛徽章:
0
3 [报告]
发表于 2011-04-01 13:08 |只看该作者
ubutnu 10.04  通过 答案为2

论坛徽章:
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
4 [报告]
发表于 2011-04-01 13:29 |只看该作者
回复 1# bzcy

bash版本

  1.      echo $BASH_VERSION
  2.      # 2.05b.0(1)-release
复制代码

  1. LOOP=1
  2. echo `expr $LOOP + 1`
  3. # 2

复制代码
expr 之后的运算数要用空白隔开的,这样会打印2,如果没有,就是1+1了,LZ看看是不是这个问题
如果不是,期待高手解答

论坛徽章:
0
5 [报告]
发表于 2011-04-01 13:38 |只看该作者
回复  bzcy

bash版本expr 之后的运算数要用空白隔开的,这样会打印2,如果没有,就是1+1了,LZ看看是不 ...
liion631818 发表于 2011-04-01 13:29





确实是这样。。杯具中。。

初学者杯具中。。。

谢谢指点。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP