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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shellLinux shell 之 判断用户输入的变量是否为数字相关的知识,希望对你有一定的参考价值。

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

在shell中如何进行计算?

方式一

[[email protected] scripts]# echo $((1+2))  
3

方式二

[[email protected] scripts]# expr 2 + 3
5
[[email protected] scripts]# 

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

[[email protected] scripts]# expr 2 * 3
expr: 语法错误
[[email protected] scripts]# expr 2 \* 3
6
[[email protected] scripts]# 

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

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

[[email protected] scripts]# echo $((a+1))
1
[[email protected] scripts]# echo $((a+2))
2

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

使用方式二解决

[[email protected] 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"


**执行结果**

[[email protected] scripts]# bash intnumber.sh
Please enter a number:1
1 is a number
[[email protected] scripts]# bash intnumber.sh
Please enter a number:a
a is not number



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

以上是关于shellLinux shell 之 判断用户输入的变量是否为数字的主要内容,如果未能解决你的问题,请参考以下文章

shellLinux shell之while循环

shellLinux shell if 语句详解

shellLinux shell 位置变量详解

shellLinux shell中括号的用法

shellLinux shell 之break和continue详解

shellLinux shell 之 打印99乘法表详解