linux 在shell里read num怎样判断输入的是合法的数字。?

createthread 2008-05-31 09:26:10
我在写一个shell,其中有一个是更具用户输入的用户ID,和组ID
来useradd的,可是不知道怎么判断输入的是合法的ID,而不是字母或负数什么的。?应该怎么判断??
...全文
1161 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
createthread 2008-06-01
  • 打赏
  • 举报
回复
echo -n "用户id:"
read userid

expr ${userid} + 10 1>/dev/null 2>&1
if(test "$?" -eq 0) then
echo "${userid} is a number!"
else
echo "${userid} is not a number!"

fi

不管我输入什么错误提示,总会这些
sdfsdf
tt:line 2: echo:command not found
:command not found
:anbiguous redirect
:command not found
sdfsdf is not a number!

sdf是我输入的。不管我输入什么都是not a number???
why?????????
feillex 2008-06-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 createthread 的回复:]
就这句不懂 2>&1

什么意思?
[/Quote]

将标准错误输出(stderr),重定向到标准输出(stdout),标准输出已经重定向到/dev/null。所以错误也到/dev/null了。
feillex 2008-06-01
  • 打赏
  • 举报
回复
expr ${num} + 0 1>/dev/null 2>&1 --执行四则运算,将变量${num}加0,并且不显示结果和错误
if [ $? -eq 0 ]; then --如果以上命令成功执行(没有出错,如果是非数字进行四则运算会出错)则。。。
createthread 2008-06-01
  • 打赏
  • 举报
回复
就这句不懂 2>&1

什么意思?
createthread 2008-06-01
  • 打赏
  • 举报
回复
我要的shell已经基本搞出来了。。。谢了,。兄台。
createthread 2008-06-01
  • 打赏
  • 举报
回复
同样没看懂。
能不能告诉我用什么关键字搜索????
feillex 2008-06-01
  • 打赏
  • 举报
回复
你是完全cp我上面的代码么?
我刚在FreeBSD上测试也是成功的。

redhat9 这个东西太旧了,我没法测试。建议升级到fedora或者是redhat enterprise
createthread 2008-06-01
  • 打赏
  • 举报
回复
在我的redhat9上没有通过。
user id:
321321
`:not a valid identifierid
:anbiguous redirect
file:line 9: syntax error near unexpected token 'fi'
file:line 9: 'fi'

我把第一句的-n去掉了。
如果不去,会出现更奇怪的现象,插入点跑到user id:的前面,输入时会把user id:覆盖?
feillex 2008-06-01
  • 打赏
  • 举报
回复
这个代码通过centos5测试
vi a.sh

#!/bin/sh
echo -n "user id:"
read userid
expr $userid + 10 1>/dev/null 2>&1
if [ $? -eq 0 ];then
echo "$userid is a number"
else
echo "$userid in not number"
fi

linco_gp 2008-05-31
  • 打赏
  • 举报
回复
没看懂,惭愧
cceczjxy 2008-05-31
  • 打赏
  • 举报
回复
搜索一下,就有结果。
echo "Please input a number: \c"
read num
expr ${num} + 0 1>/dev/null 2>&1
if [ $? -eq 0 ]; then
echo "${num} is a number!"
else
echo "${num} is not a number!"
fi

23,118

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧