shell中的条件表达式
条件表达式返回的结果都为布尔型
真为1,假为0
条件测试的表达式
[expression]
[[expression]]
test expression
这三种条件表达式的效果是一样的
比较符
整数比较
-eq:比较两个整数是否相等,$A -eq $B
-ne:测试两个整数是否不等,不等则为真,等则为假
-gt:大于为真,小于为假
-lt:小于为真,大于为假
-ge:大于或者等于
-le:小于或者等于
-e File 测试文件是否存在
-f File 测试文件是否是普通文件
-d File 测试指定路径是否是目录
-r File 测试文件是否有写的权限
-w File 测试文件是否有写的权限
-x File测试文件是否有执行的权限
-z:判断指定的变量是否存在值
-n:测试字符是否为空 非空为真(0)
-s:文件的大小非0时为真
!:逻辑非
双目:
== 相等为真
!= 不等为真
> 大于为真
< 小于为真
-a:逻辑与 都为真才为真
-o:逻辑或 一个为真就为真
test expression
expression为条件表达式
if test (表达式为真)
if test !表达式为假
test 表达式1 –a 表达式2 两个表达式都为真
test 表达式1 –o 表达式2 两个表达式有一个为真
摩根定律
!(A -a B)= !A -o !B
!(A -o B)= !A -a !B
逻辑符
&&:逻辑与,都为真则为真
如果第一个条件是真的,需要对第二个条件进行判断
如果第一个条件是假的,不需要对第二个条件进行判断,结果已经确定为假。
||:逻辑或,一个为真则为真
当第一个条件为真的时候,不在去判断第二条件,因为第一个表达式已经决定了整个表达式为真
只有当第一个表达式为假的时候才回去判断第二个表达式
应用于脚本:
这是一个用来比较两个整数大小的脚本
#!/bin/sh
read -p "Pls input two nums:" a b
[ -z $a ] || [ -z $b ] && {
echo "Pls input two nums"
exit
} expr $a + &>/dev/null
RETRAVL1=$? expr $b + &>/dev/null
RETRAVL2=$? test $RETRAVL1 -eq -a $RETRAVL2 -eq ||{
echo "Pls input two nums"
exit
} [ $a -lt $b ] && echo "$a < $b" [ $a -eq $b ] && echo "$a = $b" [ $a -gt $b ] && echo "$a > $b"
[root@BASE scripts]# sh var.sh
Pls input two nums:1 2
1 < 2
[root@BASE scripts]# sh var.sh
Pls input two nums:2 1
2 > 1
[root@BASE scripts]# sh var.sh
Pls input two nums:1 1
1 = 1
[root@BASE scripts]# sh var.sh
Pls input two nums:a
Pls input two nums
[root@BASE scripts]# sh var.sh
Pls input two nums:1
Pls input two nums
[root@BASE scripts]# sh var.sh
Pls input two nums:1 2 3
说明:一下是学习shell的时候练习的小脚本,其中也包含了一些条件判断的语句,因为刚学,写的比较烂,众网友不看也罢。
注:该脚本用于测试某目录下的某文件是否存在
#!/bin/sh
Path=/server/scripts
File=test.sh if [ ! -d $Path ]
then
echo "No such dir,is creatinig $Path"
mkdir $Path -p
fi if [ ! -f $Path/$File ]
then
echo "No such file,is creating $File"
touch $Path/$File
exit
fi echo "ls -l $Path/$File"
ls -l $Path/$File
~ 另一种写法;
#!/bin/sh
Path=/serer/scripts
File=test.sh
if [ ! -e $Path/$File ]
then
echo "No such file or directory.is creating......"
mkdir -p $Path &>/dev/null
touch $Path/$File
exit 0
fi
echo $(ls -l $Path/$File)
内存小于400M就报警的shell脚本
#!/bin/sh
LeftMem=`free -m|grep "Mem"|tr -s " "|cut -d" " -f4` //free -m 以兆为单位显示 if [ $LeftMem -lt ]
then
echo "mem is not enough" |mail -s "mem warninig at $(date +%F-%X)" @.com //要先安装sendmail
fi
shell中的条件表达式的更多相关文章
- Shell中的条件测试和循环语句
1.条件测试:test或[ 如果测试结果为真,则该命令的Exit Status为0,如果测试结果为假,则命令的Exit Status为0 运行结果: 带与.或.非的测试命令[ ! EXPR ] : E ...
- shell(shell变量、条件表达式、流程控制)
本章内容: 变量 运算 if语句 for语句 while语句 break.continue 实例 shell变量 1.shell变量简介 变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数 ...
- shell中的条件判断以及与python中的对比
shell中比如比较字符串.判断文件是否存在及是否可读等,通常用"[]"来表示条件测试. 注意:这里的空格很重要.要确保方括号的空格. if ....; then ...
- shell中if条件字符串、数字比对,[[ ]]和[ ]区别
目录 shell 括号 test 和 []符号 [[]] 符号 let和(())符号 "[]" , "[[]]" 和 "(())"对比 sh ...
- Lua 中的条件表达式
下面这代码段看上去很熟悉,就是C#里面的条件表达式,很多其它语言也都有这么一个条件表达式. ; ; string c = "c"; string d = "d" ...
- linux shell中的条件判断语句
http://bbs.chinaunix.net/thread-396805-1-1.html shell 判断语句 流程控制 "if" 表达式 如果条件为真则执行then后面的部 ...
- shell中的条件判断、参数以及变量替换
文章转自: http://www.cnblogs.com/maxupeng/archive/2011/07/02/2096551.html 一.test命令 test命令是shell内部命令,它计算作 ...
- shell中的条件判断if和测试
(一)条件判断 if 中-z 到 -d 的意思 [ -a file ] 若file存在,则为真. [ -b file ] 若file存在且是一个块特殊文件,则为真. [ -c file ] 若file ...
- shell中的条件判断
read命令 命令的语法: read [参数] 变量名 常用的参数如下: -t timeout 设定超时时间. -p prompt 设定提示信息,该提示信息将会显在光标前. 条件测试: 条件测试可以判 ...
随机推荐
- arcpy.mapping-认识arcpy.mapping
arcpy.mapping-认识arcpy.mapping by 李远祥 ArcMap提供了强大的地图制图功能,在实际的工作中,只要涉及到专题地图和地图册的制作,难免会遇到非常多的出图工作和地图图面元 ...
- Mac和Linux系统的:Arp欺骗源码
linux系统, 简化版的ARP欺骗工具 精简版, 没有很多代码, 只要把准备好的数据, 发送给到网卡接口, 利用这个工具, 可以让局域网内的一台计算机暂时掉线: #include <stdio ...
- springmvc注解式事务手动回滚
Spring的AOP事务管理默认是针对unchecked exception回滚(运行期异常,Runtime Exception),如果希望手动控制事务的回滚,可以通过 TransactionAspe ...
- java GUI简单记事本
代码: import java.awt.*; import java.awt.event.*; import java.io.*; class MyMenu { //定义该窗体所需的组件,方便其他函数 ...
- PCB信号集
每一个进程都有一个pcb进程控制块,用来控制进程的信息,同时信号在pcb中有两个队列去维护他,一个是未决信号集,每一位对应一个信号的状态,0,1,1表示未决态,另一个是信号屏蔽字(阻塞信号集),也就0 ...
- Android Studio中.9.png文件出错问题
昨天使用别人的.9.png图片放在自己的android studio工程下使用,出现如下错误: :app:preBuild UP-TO-DATE :app:preDebugBuild UP-TO-DA ...
- Java初学练习答案(循环)
/* 题目如下: 1 (for 循环)*编程找出四位整数abcd 中满足下述关系的数. (ab+cd)(ab+cd)=abcd 2 (循环)*读入一个整数n,输出如下图形 n = 3 * *** ** ...
- shiyandaima
//jidaxiangronglei #include<iostream> #include<iostream> #include<iomanip> #includ ...
- devexpress设置皮肤、字体以及折叠菜单、伸缩Panel的实现
1.为了体现系统的个性化,越来越多的系统增加了换肤功能.这里例举一个devexpress实现换肤的案例,效果图对比: 第二张图片中更换了皮肤与字体. 2.皮肤数据源绑定代码: //循环添加皮肤名称 f ...
- 深入探讨 CSS 特性检测 @supports 与 Modernizr
什么是 CSS 特性检测?我们知道,前端技术日新月异的今天,各种新技术新属性层出不穷.在 CSS 层面亦不例外. 一些新属性能极大提升用户体验以及减少工程师的工作量,并且在当下的前端氛围下: 很多实验 ...