这是一个linux下的一个简单shell脚本 是判断一个字符是不是数字的 我看不懂 需要有人给我注释一下 谢谢

#!/bin/bashecho"Pleaseinputanumber"readnumexpr$num"+"10&>/dev/nullif[$?-eq0];thenecho... #!/bin/bash
echo "Please input a number"
read num
expr $num "+" 10 &> /dev/null
if [ $? -eq 0 ];then
echo "$num is a num"
else
echo "$num not a num"
fi
展开
 我来答
百度网友3ed36da
2011-07-22 · TA获得超过251个赞
知道小有建树答主
回答量:136
采纳率:0%
帮助的人:140万
展开全部
#!/bin/bash #开头的标志, 标示是bash的脚本
echo "Please input a number" #屏幕显示 "Please input a number"
read num # 等键盘输入内容, 存在num里
expr $num "+" 10 &> /dev/null # 调用expr 命令, 使num + 10 为expr命令参数, 不显示expr的输出(输出重定向到/dev/null)
if [ $? -eq 0 ];then # 如果expr命令执行成功, $?的值会为0 , 则判断成立
echo "$num is a num" # 输出 是一个数字
else
echo "$num not a num" # 否则输出 不是数字
fi
追问
把expr$num "+" 10 的值送给/dev/null,不就是给删掉了吗,就是我想问:$?的值怎样不是0?> /dev/null  的结果怎么判断的
追答
$? 得到的是上一条命令是否执行出错, 执行未出错就会置0. 
expr $num "+" 10 在num为数字的时候执行就会成功, 在num不为数字的时候执行会出错, 出错后后面的$?就不为0.

至于&> /dev/null是和上面的这个判断无关的, 你可以把程序里&> /dev/null 去掉跑一下, 一跑你就懂了, 嘿嘿. &> /dev/null的作用只是把expr $num "+" 10这个命令原本应该输出到屏幕上的东西不输出.
比如你的num为8, expr $num "+" 10会在屏幕上输出18, 它把这个18送给/dev/null, 本身expr的执行还是成功的, 故而$?还会是0
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式