LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1669|回复: 16

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

[复制链接]
发表于 2003-8-5 20:43:24 | 显示全部楼层 |阅读模式
想写一个shell程序
令其所带参数只能有一个且是数字
否则输出错误

现在只会写判断所带参数为一时,
不知道怎么写后半部,即控制参数为数字

if [ "$#" -ne 1 ]
then
   echo "Error!"
exit 1
fi
发表于 2003-8-6 00:02:56 | 显示全部楼层
if [[ $1 != ^[0-9] ]]
then
echo "Error!"
exit 1
fi
 楼主| 发表于 2003-8-6 13:48:41 | 显示全部楼层
好像不行吧??
这样写无论带什么参数都输出error!
发表于 2003-8-6 21:07:09 | 显示全部楼层
:sorry,我搞错啦~~
if [[ $1 != [^0-9] ]]
then
echo Error
else
echo ok
fi
 楼主| 发表于 2003-8-6 22:26:01 | 显示全部楼层
帮忙看看

发表于 2003-8-6 23:24:08 | 显示全部楼层
有点怪

试试:

  if $1~[^0-9]
       then
           echo OK
  else
           echo error
   fi  
发表于 2003-8-6 23:58:13 | 显示全部楼层
好像也不对啊,可惜没的时间了,又没的linux系统让我试一下

看到上面两个判断语句,总感觉怪怪的,好像跟什么搞混了事的,有说不出来,那位指指看撒
发表于 2003-8-7 02:17:45 | 显示全部楼层
我也奇怪啦~~~:ask
cat abc
if [[ $1 != [^0-9] ]]
then
echo Error!
else
echo ok!
fi
[/home/javalee]ksh abc 34
Error!
[/home/javalee]ksh abc 5
ok!
[/home/javalee]bash abc 5
Error!
[/home/javalee]
怎么相同的写法,在不同的shell中结果相反呢?!:help
发表于 2003-8-7 02:31:34 | 显示全部楼层
奇怪,我回的问是要验证整数还是小数的贴怎么没了??

如果只验证整数的话,这样就可以:


benzy@localhost tmp $ ./test.sh abc
error
benzy@localhost tmp $ ./test.sh 12342
ok
benzy@localhost tmp $ cat test.sh
#!/bin/sh

test $1 -eq 0 2>/dev/null
test $? -eq 2 && echo error || echo ok
发表于 2003-8-7 09:47:04 | 显示全部楼层

真聪明

利用 -eq 对参数的判断,相等时返回0,不等时返回1,不是整数时返回2。

好像shell是没有对参数的判断。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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