1.条件测试类型(判断类型):

  将测试结果做为判断依据。

  测试类型有以下三种
      [ 命令 ] :命令测试法(最常用的)
      [[ 命令 ]] : 关键字测试
      test 命令
      以上是三种都可以,注意单词前后都要加空格,否则会语法错误

2.整数比较
-eq:测试两个整数是否相等 例子:[ $a -eq $b ] 相等为真 不相等为假
-ne: 测试两个整数是否不相等 不相等为真 相等为假
-gt: 测试一个数是否大于另外一个数
-lt:测试一个数是否小于另外一个数
-ge:大于等于 例子:[ 5 -ge 4 ]
-le:小于等于

3.&&:当左边为假时,右边是不执行的。只有左边为真时,右边才运算
-a:
例子:[$# -gt 1 ] && [ $# -le 3 ]
[ $# -gt 1 -a $# -le 3]
||:当左边为假时,右边就开始执行。左边为真时,右边就不运算了。
-o:
!:表示取反
!$: 表示调用上一个命令的最后一个参数

4.文件测试
-e 路径/文件名:测试文件或目录是否存在
-f 路径/文件名:测试文件是否为普通文件
-d 路径/文件名:测试文件是否为目录
-r 路径/文件名:测试当前用户对指定文件是否有读权限
-w 路径/文件名:测试当前用户对指定文件是否有写权限
-x 路径/文件名:测试当前用户对指定文件是否有执行权限

5.字符串比较
[ a = b ] ;测试两个字符是否相等 (注意=两边一定要有空格,否则系统会识别成赋值的
[ a != b ]: 测试两个字符是否不相等
-z 字符串 测试字符串是否为空
-n 字符串 测试字符串是否不空

6.算数运算
let c=$a+$b 例子:let c=1+2
c=$[$a+$b] 例子:c=$[1+2]
c=$(($a+$b))例子:c=$((10+10))

高精度计算
例子: echo "scale=10; 4/3"|bc
scale=数值 表示保留小数点后几位。 bc是一个计算工具。
或者是bc<<<"scale=2;10/3"
bc<<<3+4
expr 3 + 3 在判断变量是不是数字的时候可以用这个

例子:
#!/bin/bash
while :; do
  read -p "请输入数字:" a
  expr $a + 0 &> /dev/null
    if [ $? -ne 0 ]; then
      echo "您输入的不是数字,请重新输入"
    fi
done

或者是
#!/bin/bash
while :; do
  read -p "请输入数字:" a
  case $a in
  [a-z])
    continue;;
  *)
    exit 1;;
  esac
done

shell2-if判断的更多相关文章

  1. JS 判断数据类型的三种方法

    说到数据类型,我们先理一下JavaScript中常见的几种数据类型: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Functi ...

  2. C语言 · 奇偶判断

    问题描述 能被2整除的数称为偶数,不能被2整除的数称为奇数.给一个整数x,判断x是奇数还是偶数. 输入格式 输入包括一个整数x,0<=x<=100000000. 输出格式 如果x是奇数,则 ...

  3. Android 判断一个 View 是否可见 getLocalVisibleRect(rect) 与 getGlobalVisibleRect(rect)

    Android 判断一个 View 是否可见 getLocalVisibleRect(rect) 与 getGlobalVisibleRect(rect) [TOC] 这两个方法的区别 View.ge ...

  4. 【小计】新人Tostring前忘记Null判断的处理

    ToString和string.Concat(可屏蔽Null的异常)性能相差不大,一些中小项目完全可以用Concat(新人容易忘记判断Null的情况,遇到太多了,所以建议重写tostring方法,内部 ...

  5. js:给定两个数组,如何判断他们的相对应下标的元素类型是一样的

    题目: 给Array对象原型上添加一个sameStructureAs方法,该方法接收一个任意类型的参数,要求返回当前数组与传入参数数组(假定是)相对应下标的元素类型是否一致. 假设已经写好了Array ...

  6. JS判断鼠标进入容器方向的方法和分析window.open新窗口被拦截的问题

    1.鼠标进入容器方向的判定 判断鼠标从哪个方向进入元素容器是一个经常碰到的问题,如何来判断呢?首先想到的是:获取鼠标的位置,然后经过一大堆的if..else逻辑来确定.这样的做法比较繁琐,下面介绍两种 ...

  7. javascript 判断参数类型大全

    js 判断类型的在开发中是很常用的,因为js 是弱类型的语言,var 可以接受任何形式的类型,但是在真正的开发中,我们需要根据不同类型做不同的处理,所以这个是必须的精通. 首先需要知道 typeof这 ...

  8. 深入Java虚拟机--判断对象存活状态

    程序计数器,虚拟机栈和本地方法栈 首先我们先来看下垃圾回收中不会管理到的内存区域,在Java虚拟机的运行时数据区我们可以看到,程序计数器,虚拟机栈,本地方法栈这三个地方是比较特别的.这个三个部分的特点 ...

  9. C语言中如何判断文件是否存在

    方法一:access函数判断文件夹或者文件是否存在 函数原型: int access(const char *filename, int mode); 所属头文件:io.h filename:可以填写 ...

  10. 根据ip判断返回城市名称查询当地天气

    <?phpheader("content-type:text/html;charset=utf-8");date_default_timezone_set("Asi ...

随机推荐

  1. golang vendor

    安装参考 https://blog.csdn.net/huwh_/article/details/77169858 Go 1.5引入了vendor文件夹,其对语言使用,go命令没有任何影响.若某个路径 ...

  2. 应用springMVC时如果配置URL映射时如下配置

    应用springMVC时如果配置URL映射时如下配置 [html] view plaincopy<servlet> <servlet-name>appServlet</s ...

  3. springboot优雅实现异常处理

    前言 在平时的 API 开发过程中,总会遇到一些错误异常没有捕捉到的情况.那有的小伙伴可能会想,这还不简单么,我在 API 最外层加一个 try...catch 不就完事了. 哈哈哈,没错.这种方法简 ...

  4. 【Linux】【Services】【KVM】virsh命令详解

    1. virsh的常用命令 help:获取帮助 virsh help KEYWORD list:列出域 dumpxml:导出指定域的xml格式的配置文件: create:创建并启动域: define: ...

  5. Spring Batch(0)——控制Step执行流程

    Conditional Flow in Spring Batch I just announced the new Learn Spring course, focused on the fundam ...

  6. Spring Boot的异步任务、定时任务和邮件任务

    一.异步任务 1.启动类添加注解@EnableAsync,开启异步任务注解功能: 2.需要异步执行的方法上添加@Async注解. 二.定时任务 1.启动类添加注解@EnableScheduling,开 ...

  7. MyBatis一对多映射简单查询案例(嵌套结果)

    一.案例描述 书本类别表和书本信息表,查询书本类别表中的某一记录,连带查询出所有该类别书本的信息. 二.数据库表格 书本类别表(booktypeid,booktypename) 书本信息表(booki ...

  8. 为什么在集合中不能使用int关键字作为类型

    解释: 1.Int是基本数据类型,Integer是Int的引用类型,定义集合的时候不能使用基本数据类型,需要使用对应的引用类型 2.int是基本数据类型,Integer是他的包装类,包装类主要用在类型 ...

  9. C# SAP Connector .NET Framework 4.5 版本下载

    公司对接 SAP 数据使用 SAP Connector 程序,主要是两个类库:sapnco.dll.sapnco_utils.dll 但是没想到它的版本如此混乱,.NET 2.0 和 .NET 4.0 ...

  10. 估计工期标识(Project)

    <Project2016 企业项目管理实践>张会斌 董方好 编著 有时候吧,我们遇到的任务,工期并不是那么好定的,本来嘛,一个项目如果全靠拍脑袋,最后搞不好会被人锤脑袋-- 看来PM有风险 ...