LinuxSir.cn,穿越时空的Linuxsir!

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

请教一个判断shell程序参数问题

[复制链接]
 楼主| 发表于 2003-8-7 11:10:16 | 显示全部楼层
看得不太懂上面两句话
基础知识太差,去找书看看咯!
:p
发表于 2003-8-7 19:39:42 | 显示全部楼层
嗯,test可以判断是不是整数

但小数怎么办呢?perl的话可以用正则表达式:(

btw:解释一下
$? 是上一个命令的返回码,-eq是用于数值比较的,
test $1 -eq 0 执行后返回 2 表示 $1不是整数
发表于 2003-8-7 20:21:56 | 显示全部楼层
这样来判断你输入的是否是数字而且判断是否是整数或小数,没怎么调试,;)不知道是否可行?!
  1. #!/bin/ksh
  2. #
  3. n=$(echo "$1*1"|bc)
  4. if [[ $n == $1 ]]
  5. then
  6. if echo $1|grep "\."  >/dev/null
  7. then
  8. echo "$1是小数"
  9. else
  10. echo "$1是整数"
  11. fi
  12. else
  13. echo "$1不是数字"
  14. fi
复制代码
发表于 2003-8-8 00:06:39 | 显示全部楼层
还是用了shell以外的 bc 及 grep 等。
总之shell还是比perl简单了一点
 楼主| 发表于 2003-8-8 11:01:33 | 显示全部楼层
嘿嘿~~大大的收获!!!
感谢各位!:thank
发表于 2003-8-10 22:53:45 | 显示全部楼层
啊,对了,还可以用grep ,哈哈,那就好办了,可以用regular expr了
:)

benzy@localhost tmp $ cat test.sh
#!/bin/sh

echo $1|grep -qE '^[0-9]*\.?[0-9]*$' && echo ok || echo error
# grep -E 表示匹配扩展的正则表达式 -q表示安静模式

benzy@localhost tmp $ ./test.sh 3.14
ok
benzy@localhost tmp $ ./test.sh 3.14a
error
benzy@localhost tmp $ ./test.sh 1243
ok
benzy@localhost tmp $ ./test.sh .1243
ok
benzy@localhost tmp $ ./test.sh a.1243
error
benzy@localhost tmp $ ./test.sh abc
error
发表于 2003-8-11 00:09:49 | 显示全部楼层
不错!,;)有那么多"利器",为什么不充分发挥他们的效能呢?!;)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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