当前位置:首页 > 操作系统 > Linux

【shell】Linux shell 之 判断用户输入的变量是否为数字

本文内容:判断用户输入的参数是否为数字

在shell中如何进行计算?

方式一

        [root@XiaoPeng scripts]# echo $((1+2))  
3
    

方式二

        [root@XiaoPeng scripts]# expr 2 + 3
5
[root@XiaoPeng scripts]# 

    

注意:使用方式二的时候,要求必须要有间隔。如果使用的是乘法,号必须进行转义写为

        [root@XiaoPeng scripts]# expr 2 * 3
expr: 语法错误
[root@XiaoPeng scripts]# expr 2 * 3
6
[root@XiaoPeng scripts]# 

    

如何判断用户输入的变量值是否为数字?

首先大家先来看一下使用echo 进行计算的时候,字符 + 数字会是什么效果。

        [root@XiaoPeng scripts]# echo $((a+1))
1
[root@XiaoPeng scripts]# echo $((a+2))
2
    

在这个例子中,shell 会把字符当做0来计算,如果我们想判断用户输入的是否为数字,那就可以使用 echo $((变量+1))去判断,如果为1,那么用户输入的为字符,如果为数字,那么结果不为1.
但是这样会有个问题,假如用户输入的数字为0呢?

使用方式二解决

        [root@XiaoPeng scripts]# expr b + 3
expr: 非数值参数
    

假设用户输入的参数为字符,那么使用expr就会计算失败,这时候 $? 就不为0,那么我们只需要看 $? 是否为0即可判断用户输入的参数是否为数字了。

例子

```#!/bin/bash -

read -p "Please enter a number:" number
expr $number + 1 >/dev/null 2>&1
[ $? -ne 0 ] && echo " $number is not number" || echo "$number is a number"

        
**执行结果**

    

[root@XiaoPeng scripts]# bash intnumber.sh
Please enter a number:1
1 is a number
[root@XiaoPeng scripts]# bash intnumber.sh
Please enter a number:a
a is not number

        

版权所有:[arppinging](www.arppinging.com)
    

原文:http://blog.51cto.com/xiaowangzai/2090964


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐