LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
123
返回列表 发新帖
楼主: 0100

请帮我看看这些错误(重复,已合并)

[复制链接]
 楼主| 发表于 2003-5-18 10:55:42 | 显示全部楼层
知道原因了.原来是没有看tram兄的回复.
没有在[]的里加上空格.现在可以运行了.
 楼主| 发表于 2003-5-18 11:03:57 | 显示全部楼层
新的问题又来了.好像if []里没有比较啊.请看看我的运行结果.
[st1866@localhost st1866]$ mycal 10 2002
2
[st1866@localhost st1866]$ cat mycal
#! /bin/bash
echo $#
if [ $#! = 2 ]
then
echo $#
echo You must input the month and years
elif [[ $2! = "200*" ]]
then
echo Your years format is not right.
cal $1 $2
fi
[st1866@localhost st1866]$
 楼主| 发表于 2003-5-18 11:18:44 | 显示全部楼层
真不好意思
我说的是第一个if
当我输入mycal 10
时.仍然把cal $1 $2也运行了.
 楼主| 发表于 2003-5-18 11:20:33 | 显示全部楼层
第二个if也不比较.我输入mycal 10 3002
同样把cal $1 $2也运行了出来.
 楼主| 发表于 2003-5-18 11:32:28 | 显示全部楼层
javalee兄.那我输入mycal 10 2002时.是不是bash会把2002当成数字?能不能转化为字符串?如果我想比较第二个参数是不是以200开头的.如何比较?
发表于 2003-5-18 12:12:55 | 显示全部楼层
你参考一下
  1. #!/bin/ksh
  2. #
  3. (($# != 2)) && { echo "Usage: mycal month year"; exit 1; }
  4. if [[ $1 >=1 && $1 <=12 ]]
  5. then
  6. echo "Use 1-12"
  7. exit 1
  8. fi
  9. if [[ $2 >2010 || $2 <2000 ]]
  10. then
  11. echo "year:2000-2010"
  12. exit 1
  13. fi
  14. cal $1 $2
复制代码
刚刚起床,有些犯蒙;)
 楼主| 发表于 2003-5-18 16:44:53 | 显示全部楼层
12.12分才刚起床.
我不同样跟你一样到二点才睡.我八点就醒了.
javalee兄.你帮了我很多.但我太令你失望了.我连bash都用不好.怎么用ksh呢?你bash这么熟悉.不如用bash写给我.或者我学得更顺利.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表