+ -
当前位置:首页 → 问答吧 → 这样的逻辑我不懂

这样的逻辑我不懂

时间:2011-04-20

来源:互联网

  1. bash#
  2. # [ -n $(echo '')];echo $?
  3. 0
  4. # [ -z $(echo '')];echo $?
  5. 0
复制代码
这个谁懂?为什么两次输出都是0?

作者: 唔系外星人   发布时间: 2011-04-20

回复 唔系外星人
在test中,对字符串变量加""是个很好的习惯
  1. ywlscpl@ubuntu:~$ cat o
  2. [ -n $(echo '')];echo $?
  3. [ -z $(echo '')];echo $?
  4. ywlscpl@ubuntu:~$ sh -x o
  5. + echo
  6. + [ -n ]
  7. + echo 0
  8. 0
  9. + echo
  10. + [ -z ]
  11. + echo 0
  12. 0
复制代码
  1. ywlscpl@ubuntu:~$ cat o1
  2. [ -n "$(echo '')" ];echo $?
  3. [ -z "$(echo '')" ];echo $?
  4. ywlscpl@ubuntu:~$ sh -x o1
  5. + echo
  6. + [ -n  ]
  7. + echo 1
  8. 1
  9. + echo
  10. + [ -z  ]
  11. + echo 0
  12. 0
复制代码

作者: ywlscpl   发布时间: 2011-04-20

$?是上次执行是否成功。都成功又没报错当然是0啊

作者: zooyo   发布时间: 2011-04-20

我想知道条件判断里面发生什么事了?

作者: 唔系外星人   发布时间: 2011-04-20

明白,结贴

作者: 唔系外星人   发布时间: 2011-04-20