免费注册 查看新帖 |

Chinaunix

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

怎么这样赋值???? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-06-11 15:47 |只看该作者 |倒序浏览
x=$(($x+1));    这句不是$2的值吗??
和x=`echo "$x + 1 " | bc`
有什么区别???

论坛徽章:
0
2 [报告]
发表于 2003-06-11 15:50 |只看该作者

怎么这样赋值????

如果$x=1,那么
x=$(($x+1))后,x=$2;

x=`echo "$x + 1 " | bc` 后x=2

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
3 [报告]
发表于 2003-06-11 16:37 |只看该作者

怎么这样赋值????

ibm99你是用bash的吗?

$((expression))是bash的“算术扩展”操作符,expression作为一个算术表达式被计算,然后替换结果。其中expression如同用双引号括起一样,允许对它进行参数替换。
  1. TWO=$((1+1))   #TWO=2
  2. TREE=$(($TWO+1))  #TREE=3
复制代码


$(())的语法大概是bash的扩展吧,其它的shell不一定支持。

如果做整数计算还可以用expr命令;

如果是浮点数,或者精度要求非常高,那么bc是个好帮手。

bash的功能很强,但是使用了它的扩展语法,脚本的移植性就会有问题了。   
expr和bc是标准的unix工具,用起来不必有兼容性的顾虑。其它如awk/perl等脚本语言也可以做算术计算。
如何取舍选择,有您自己决定。

论坛徽章:
0
4 [报告]
发表于 2003-06-11 16:55 |只看该作者

怎么这样赋值????

[quote]原帖由 "woodie"]$(())的语法大概是bash的扩展吧,其它的shell不一定支持。[/quote 发表:
   

$((..)) 始于 ksh,一般 UNIX 下都有 ksh.

但是确实,如果你的脚本移植性好一点的话,建议还是用通用的 expr, bc等来做算术运算。

论坛徽章:
0
5 [报告]
发表于 2003-06-11 16:56 |只看该作者

怎么这样赋值????

谢谢了,我的系统是ksh的,但是
x=$(($x+1)) 和 x=`echo "$x + 1 " | bc`
结果一样。

论坛徽章:
0
6 [报告]
发表于 2003-06-11 17:22 |只看该作者

怎么这样赋值????

原帖由 "ibm99" 发表:
谢谢了,我的系统是ksh的,但是
x=$(($x+1)) 和 x=`echo "$x + 1 " | bc`
结果一样。
   

为什么你觉得它们应该不一样?  

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
7 [报告]
发表于 2003-06-11 17:53 |只看该作者

怎么这样赋值????

原帖由 "红袖添香" 发表:
   

$((..)) 始于 ksh,一般 UNIX 下都有 ksh.

但是确实,如果你的脚本移植性好一点的话,建议还是用通用的 expr, bc等来做算术运算。
   

多谢红袖指教,又长了点知识,hoho。我平常用的是bash。

论坛徽章:
0
8 [报告]
发表于 2003-06-11 18:08 |只看该作者

怎么这样赋值????

原帖由 "woodie" 发表:
   

多谢红袖指教,又长了点知识,hoho。我平常用的是bash。
   

其实我喜欢用 bash 作为 login shell,敲命令方便啊,
但是很少用它写脚本。

论坛徽章:
0
9 [报告]
发表于 2003-06-12 08:02 |只看该作者

怎么这样赋值????

原帖由 "红袖添香" 发表:
   

其实我喜欢用 bash 作为 login shell,敲命令方便啊,
但是很少用它写脚本。
   

哈哈,原来红袖J也喜欢用BASH做LOGIN SHELL啊,我也喜欢,那样可以用TAB,方便的很,而且我现在学的也是BASH,想问的是红袖为什么不喜欢用BASH写脚本呢?

论坛徽章:
0
10 [报告]
发表于 2003-06-12 19:32 |只看该作者

怎么这样赋值????

原帖由 "anonimousboy" 发表:
   

哈哈,原来红袖J也喜欢用BASH做LOGIN SHELL啊,我也喜欢,那样可以用TAB,方便的很,而且我现在学的也是BASH,想问的是红袖为什么不喜欢用BASH写脚本呢?
   

为了可移植性啊,bash 不是默认的 shell, OpenBSD 下系统进入安全模式时,很有可能就无法运行 bash。因此一般我都是用 bourne shell 写的,基本上 bourne shell 就能满足要求。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP