+ -
当前位置:首页 → 问答吧 → 初学shell。有点问题,帮忙看看~~~

初学shell。有点问题,帮忙看看~~~

时间:2011-07-20

来源:互联网

gogo11@localhost:~/test$ cat test
  1. #!/bin/bash
  2. if [ $# -gt 1 ] ; then
  3. num=1
  4. else
  5. num=""
  6. fi
  7. [ -n $num ] && echo "the num is $num"
  8. [ -z $num ] && echo "the num is fdajslfd"
复制代码
gogo11@localhost:~/test$ ./test
the num is
the num is fdajslfd
gogo11@localhost:~/test$
无论有没有else;num="",第一个判断都是正确,为什么?[ -n $num ]正确,[ -z $num ]也正确,怎么可能!?
---------------------------------------------------------------------------------
gogo11@localhost:~/test$ cat test
  1. #!/bin/bash
  2. if [ $# -gt 1 ] ; then
  3. num=1
  4. else
  5. num=""
  6. fi
  7. [ $num = 1 ] && echo "the num is $num"
  8. [ -z $num ] && echo "the num is fdajslfd"
复制代码
gogo11@localhost:~/test$ ./test
./test: 第 7 行: [: =: 需要单个参数
the num is fdajslfd
gogo11@localhost:~/test$
第7行:[ $num = 1 ] && echo "the num is $num"
[ $num = 1 ] 格式不对?下边的好像也不对
  1. if [ $num = 1 ] ; then
  2. echo "the num is $num"
  3. fi
复制代码

作者: gogo11   发布时间: 2011-07-20

初学都学的这么有深度。。。我帮不了你啊。。

作者: siasleo   发布时间: 2011-07-20

[ $num = 1 ]
这种写法肯定不对
如果 $num是数字, 那么只能用 -eq, 即[ $num -eq 1 ]
如果$num是字符, 那么后面的同样为字符, 需要加"", 即[ $num = "1" ]

作者: age   发布时间: 2011-07-20

3楼的 [ $num = "1" ]应该是[ $num == "1" ]吧~?!

作者: 年年年   发布时间: 2011-07-20