shell2-if判断
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判断的更多相关文章
- JS 判断数据类型的三种方法
说到数据类型,我们先理一下JavaScript中常见的几种数据类型: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Functi ...
- C语言 · 奇偶判断
问题描述 能被2整除的数称为偶数,不能被2整除的数称为奇数.给一个整数x,判断x是奇数还是偶数. 输入格式 输入包括一个整数x,0<=x<=100000000. 输出格式 如果x是奇数,则 ...
- Android 判断一个 View 是否可见 getLocalVisibleRect(rect) 与 getGlobalVisibleRect(rect)
Android 判断一个 View 是否可见 getLocalVisibleRect(rect) 与 getGlobalVisibleRect(rect) [TOC] 这两个方法的区别 View.ge ...
- 【小计】新人Tostring前忘记Null判断的处理
ToString和string.Concat(可屏蔽Null的异常)性能相差不大,一些中小项目完全可以用Concat(新人容易忘记判断Null的情况,遇到太多了,所以建议重写tostring方法,内部 ...
- js:给定两个数组,如何判断他们的相对应下标的元素类型是一样的
题目: 给Array对象原型上添加一个sameStructureAs方法,该方法接收一个任意类型的参数,要求返回当前数组与传入参数数组(假定是)相对应下标的元素类型是否一致. 假设已经写好了Array ...
- JS判断鼠标进入容器方向的方法和分析window.open新窗口被拦截的问题
1.鼠标进入容器方向的判定 判断鼠标从哪个方向进入元素容器是一个经常碰到的问题,如何来判断呢?首先想到的是:获取鼠标的位置,然后经过一大堆的if..else逻辑来确定.这样的做法比较繁琐,下面介绍两种 ...
- javascript 判断参数类型大全
js 判断类型的在开发中是很常用的,因为js 是弱类型的语言,var 可以接受任何形式的类型,但是在真正的开发中,我们需要根据不同类型做不同的处理,所以这个是必须的精通. 首先需要知道 typeof这 ...
- 深入Java虚拟机--判断对象存活状态
程序计数器,虚拟机栈和本地方法栈 首先我们先来看下垃圾回收中不会管理到的内存区域,在Java虚拟机的运行时数据区我们可以看到,程序计数器,虚拟机栈,本地方法栈这三个地方是比较特别的.这个三个部分的特点 ...
- C语言中如何判断文件是否存在
方法一:access函数判断文件夹或者文件是否存在 函数原型: int access(const char *filename, int mode); 所属头文件:io.h filename:可以填写 ...
- 根据ip判断返回城市名称查询当地天气
<?phpheader("content-type:text/html;charset=utf-8");date_default_timezone_set("Asi ...
随机推荐
- Function overloading and return type
In C++ and Java, functions can not be overloaded if they differ only in the return type. For example ...
- js和jquery之间的转换
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- CF424A Squats 题解
Content 给定一个长度为 \(n\) 的仅由 x 和 X 组成的字符串,求使得字符串中 x 和 X 的数量相等需要修改的次数,并输出修改后的字符串. 数据范围:\(2\leqslant n\le ...
- java 编程基础 Class对象 反射:代理模式和静态代理
生活中的代理 类(对象)代理模式 代理模式是面向对象编程中比较常见的设计模式. 1. 用户只关心接口功能,而不在乎谁提供了功能.上图中接口是 Subject 2. 接口真正实现者是上图的 RealSu ...
- Error: Not found: 'package:json_annotation/json_annotation.dart'
问题原因 json_annotation版本不对 修改json_annotation版本号 当前可用版本号 json_annotation: ^2.2.0
- Linux使用docker安装Nginx
拉取镜像 docker pull nginx 启动镜像 docker run -d -p 8000:8000 -p 443:443 --name nginx -v /data/nginx/www:/u ...
- Swagger请求报错:TypeError: Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body.
TypeError: Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body. 如下图 ...
- 【LeetCode】1464. 数组中两元素的最大乘积 Maximum Product of Two Elements in an Array (Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 暴力 找最大次大 日期 题目地址:https://le ...
- 【LeetCode】52. N-Queens II 解题报告(Python & C+)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 全排列函数 回溯法 日期 题目地址:https:// ...
- 【LeetCode】470. Implement Rand10() Using Rand7() 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...