码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2018-03-25 21:44:30      阅读:307      评论:0      收藏:0      [点我收藏+]

标签:shell   linux   脚本   编程   自动化运维   

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

在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)

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

标签:shell   linux   脚本   编程   自动化运维   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!