免费注册 查看新帖 |

Chinaunix

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

[学习共享] abs 上关于let 的解释不理解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-12-30 20:40 |只看该作者 |倒序浏览
本帖最后由 wuxiaobo_2009 于 2013-12-30 20:41 编辑
  1. # Evgeniy Ivanov points out:

  2. var=0
  3. echo $?     # 0
  4.             # As expected.

  5. let var++
  6. echo $?     # 1
  7.             # The command was successful, so why isn't $?=0 ???
  8.             # Anomaly!
  9. [color=Red]#  i want to known why ?[/color]

  10. let var++
  11. echo $?     # 0
  12.             # As expected.

  13. [color=Red]# i also want to known why ?[/color]
  14. # Likewise . . .

  15. let var=0
  16. echo $?     # 1
  17.             # The command was successful, so why isn't $?=0 ???

  18. #  However, as Jeff Gorak points out,
  19. #+ this is part of the design spec for 'let' . . .
  20. # "If the last ARG evaluates to 0, let returns 1;
  21. #  let returns 0 otherwise." ['help let']
复制代码

论坛徽章:
3
天蝎座
日期:2013-12-30 15:59:06天蝎座
日期:2014-02-27 11:10:40巨蟹座
日期:2014-04-16 10:19:11
2 [报告]
发表于 2013-12-31 11:11 |只看该作者
哪儿不理解呢?
let可以这样用:
var=1
let "var+=1"
echo $var
2
估计这样你就明白了。。。,而且和(())的用法一样,如:
var=1
((var+=1))
echo $var
2

论坛徽章:
0
3 [报告]
发表于 2013-12-31 18:56 |只看该作者
习惯了用
declare -i NUM
免得被当作字符串之类

论坛徽章:
0
4 [报告]
发表于 2013-12-31 20:56 |只看该作者
let  运算之后的 $? 请看那里。 不理解

论坛徽章:
0
5 [报告]
发表于 2013-12-31 21:15 |只看该作者
回复 4# wuxiaobo_2009

翻翻ABS吧,应该有提,以下为工作中收集到的一些,


    shell   中特殊变量

$$         表示进程号PID
$?        上个命令退出代码
$#        位置参数数量(不包含脚本名)
$!        最后的一个后台进程的PID
$0        script文件名
$1        位置参数 #1
$*        所有位置参数(作为一个字符串)
$@        所有位置参数(分隔的单个单个的参数) 这两个括号里的内容可能理解有错,不确定。请勿轻信

论坛徽章:
0
6 [报告]
发表于 2013-12-31 21:22 |只看该作者
回复 5# tseesing

看来楼上的误解我的意思了,我想问,为什么let 运算之后  $? 的结果是上边的那样。 求解。


   

论坛徽章:
0
7 [报告]
发表于 2014-01-01 13:54 |只看该作者
回复 6# wuxiaobo_2009

man bash

然后搜索 let

    let arg [arg ...]
              Each  arg  is  an arithmetic expression to be evaluated (see ARITHMETIC EVALUATION above).  If the
              last arg evaluates to 0, let returns 1; 0 is returned otherwise.

论坛徽章:
3
天蝎座
日期:2013-12-30 15:59:06天蝎座
日期:2014-02-27 11:10:40巨蟹座
日期:2014-04-16 10:19:11
8 [报告]
发表于 2014-01-02 13:51 |只看该作者
正解
回复 7# zw421961


   

论坛徽章:
1
辰龙
日期:2014-01-02 13:34:19
9 [报告]
发表于 2014-01-02 14:10 |只看该作者
$?        上个命令退出代码
let的退出字符:"If the last ARG evaluates to 0, let returns 1"
学习了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP