【shell】Linux 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)

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

时间: 2024-12-22 23:59:33

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

43.编写一个程序,判断用户输入的字符是否是数字,若是数字,则输出“a numerical character”

//1.学习到字符输入 //2.判断字符 #include<iostream> using namespace std; int main() { char a; cout<<"please input a charcter: "<<endl; cin>>a; if(a>'0'&&a<'9') { cout<<"it's a numerical character!"<&l

alertDialog创建登陆界面,判断用户输入

alertDialog创建登陆界面,需要获取用户输入的用户名和密码,获取控件对象的时候不能像主布局文件那样获得, 需要在onClickListener中获取,代码如下: 1 public boolean onOptionsItemSelected(MenuItem item) { 2 // TODO Auto-generated method stub 3 switch(item.getItemId()){ 4 case 1: 5 Intent intent = new Intent(); 6

以写代学:python 数据类型之字符串,判断用户输入的id是否符合要求

字符串操作符 比较操作符:字符串大小按ASCLL码值大小进行比较 切片操作符:[].[:].[::] 成员关系操作符:in.not in 脚本:判断用户输入的id是否符合要求 #!/usr/bin/env python import string #定义字符的范围first_id = string.letters + "_"           //确定首字符的范围all_id = string.digits + first_id         //确定其他字符的范围 #请求用户输入

判断用户输入的邮箱地址是否合法 传说中的正则表达式?

判断用户输入的邮箱地址是否合法 - (BOOL) validateEmail: (NSString *) candidate { NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}"; NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", em

判断用户注册名是否是符合(数字+字母)的功能实现

-(BOOL)isLoginPassWordLegal:(NSString *)passWord{ BOOL result = false; if ([passWord length] >= 6){ // 判断长度大于8位后再接着判断是否同时包含数字和字符 NSString * regex = @"^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,16}$"; NSPredicate *pred = [NSPredicate predicateWit

java循环练习:用户输入一个10以内的数字,通过运算求出该数字的阶乘

package practiceGO; import java.util.Scanner; /*  * 4.用户输入一个10以内的数字,通过运算求出该数字的阶乘  */ public class Cto { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入一个10以内的数字,由系统计算阶乘"); int num = sc.nextIn

shell整理(29)===判断用户输入可不可以作为变量

(一)题目: 接受一个用户输入,判断这个输入是否可以作为变量 可以作为变量的条件 (1)大小写字母都可以 (2)字母中间可以有数字,但是不能以数字开头 (3)特殊字符除了"_ "其他都不可以作为变量 例如: [[email protected] hushuai]# bash 22.sh Input:1dsf Name is not [[email protected] hushuai]# bash 22.sh Input:=ewr Name is not [[email protect

shell 如何判断用户从键盘输入的变量是否为数字

在bash shell当中其实是没有直接的命令去判断变量是否为一个纯数字的,那么我们就是用间接的方法: 问题描述: read -t 30 -p "Please a number: " NUM 使用read命令接受用户从键盘输入一个变量,保存在变量NUM当中,有时候用户瞎输入一通,或者不输入,这对脚本的执行会有影响,顾提前判断一下,较好也是必要的,那么怎么判断呢? 方法一: 将NUM变量做进一步处理: STRING=`echo ${NUM}|sed 'sS^.*[0-9]$SS'` 将$

Shell脚本学习笔记-用户输入处理

1. 命令行参数 1.1 参数之间空格分隔,格式:$+position, e.g. $0, $1, $2,  其中$0表示脚本名字,超过10个参数时,e.g. 第10个参数用${10}表示: 1.2 简单示例: 1.3 通过建立软连接的方式,同一个脚本,根据不同脚本名字,运行不同脚本内容,e.g.: 2. 命令行参数变量的处理 2.1 通过条件判断,进行错误检测: 2.2 通过shift命令,进行移动位置参数: 2.3 命令行参数选项处理: 2.3.1 简单选项处理,e.g.: 2.3.2 分离