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 ...
随机推荐
- 实现new Date(), 获取当前时间戳
JS 获取时间戳: 我相信大家找了很久了吧! 希望我写的这个对您有些帮助哦~ 大家是不是以为时间戳是关于时间的,都去 new Date() 里面找方法了啊,我来告诉你们正确的吧 其实大家用 JS 里的 ...
- 什么是微服务,SpringBoot和SpringCloud的关系和区别
什么是微服务? 就目前而言对于微服务业界没有一个统一的,标准的定义.但通常而言,微服务是一种架构模式或者说是一种架构风格,它提倡单一应用程序划分为一组小的服务,每个服务在其独立的自己的进程中,服务之间 ...
- Jenkins 关闭和重启的实现方式
关闭jenkins 只需要在访问jenkins服务器的网址url地址后加上exit.例如我jenkins的地址http://localhost:8080/ , 那么我只需要在浏览器地址栏上敲下 htt ...
- 前端浅谈---协议相关(TCP连接)
TCP连接 http的描述里面,我弱化了交互过程的描述,因为它相对复杂.所以我在此单独描述.客户端和服务端传递数据时过程相对谨慎和复杂,主要是开始和结束的过程.而这整个过程就是TCP连接.连接流程大体 ...
- ciscn_2019_s_6
例行检查 没有开启nx保护,考虑用shellcode来做这道题 程序放入ida查看 我们可以输入48个字符覆盖0使printf打印出bp的值 继续看这里,buf的大小实际上只有0x38的大小,但是re ...
- ciscn_2019_s_3
拿到题目例行检查 64位程序开启了nx保护,将程序放入ida 看到没有system函数第一时间想到的就是泄露libc来做,后来才知道是我学识尚浅,需要用execve函数来做 进入main发现跳转到vu ...
- SWPUCTF 2019 pwn writeup
来做一下以前比赛的题目,下面两个题目都可以在buu复现(感谢赵总). SWPUCTF_2019_login 32位程序,考点是bss段上的格式化字符串.用惯onegadgets了,而对于32位程序来说 ...
- [BUUCTF]REVERSE——[BJDCTF2020]BJD hamburger competition
[BJDCTF2020]BJD hamburger competition 附件 步骤: 例行检查,64位程序,无壳儿 由于unity是用C++开发的,这里就不用IDA了,直接用dnspy看源码 在B ...
- Python 的切片为什么不会索引越界?
切片(slice)是 Python 中一种很有特色的特性,在正式开始之前,我们先来复习一下关于切片的知识吧. 切片主要用于序列对象中,按照索引区间截取出一段索引的内容. 切片的书写形式:[i : i+ ...
- 移动端滚动方案:better-scroll
BetterScroll 是什么 BetterScroll 是一款重点解决移动端(已支持 PC)各种滚动场景需求的插件.它的核心是借鉴的 iscroll (opens new window) 的实现, ...