条件表达式返回的结果都为布尔型

  真为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中的条件表达式的更多相关文章

  1. Shell中的条件测试和循环语句

    1.条件测试:test或[ 如果测试结果为真,则该命令的Exit Status为0,如果测试结果为假,则命令的Exit Status为0 运行结果: 带与.或.非的测试命令[ ! EXPR ] : E ...

  2. shell(shell变量、条件表达式、流程控制)

    本章内容: 变量 运算 if语句 for语句 while语句 break.continue 实例 shell变量 1.shell变量简介 变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数 ...

  3. shell中的条件判断以及与python中的对比

    shell中比如比较字符串.判断文件是否存在及是否可读等,通常用"[]"来表示条件测试. 注意:这里的空格很重要.要确保方括号的空格. if ....; then          ...

  4. shell中if条件字符串、数字比对,[[ ]]和[ ]区别

    目录 shell 括号 test 和 []符号 [[]] 符号 let和(())符号 "[]" , "[[]]" 和 "(())"对比 sh ...

  5. Lua 中的条件表达式

    下面这代码段看上去很熟悉,就是C#里面的条件表达式,很多其它语言也都有这么一个条件表达式. ; ; string c = "c"; string d = "d" ...

  6. linux shell中的条件判断语句

    http://bbs.chinaunix.net/thread-396805-1-1.html shell 判断语句 流程控制 "if" 表达式 如果条件为真则执行then后面的部 ...

  7. shell中的条件判断、参数以及变量替换

    文章转自: http://www.cnblogs.com/maxupeng/archive/2011/07/02/2096551.html 一.test命令 test命令是shell内部命令,它计算作 ...

  8. shell中的条件判断if和测试

    (一)条件判断 if 中-z 到 -d 的意思 [ -a file ] 若file存在,则为真. [ -b file ] 若file存在且是一个块特殊文件,则为真. [ -c file ] 若file ...

  9. shell中的条件判断

    read命令 命令的语法: read [参数] 变量名 常用的参数如下: -t timeout 设定超时时间. -p prompt 设定提示信息,该提示信息将会显在光标前. 条件测试: 条件测试可以判 ...

随机推荐

  1. arcpy.mapping-认识arcpy.mapping

    arcpy.mapping-认识arcpy.mapping by 李远祥 ArcMap提供了强大的地图制图功能,在实际的工作中,只要涉及到专题地图和地图册的制作,难免会遇到非常多的出图工作和地图图面元 ...

  2. Mac和Linux系统的:Arp欺骗源码

    linux系统, 简化版的ARP欺骗工具 精简版, 没有很多代码, 只要把准备好的数据, 发送给到网卡接口, 利用这个工具, 可以让局域网内的一台计算机暂时掉线: #include <stdio ...

  3. springmvc注解式事务手动回滚

    Spring的AOP事务管理默认是针对unchecked exception回滚(运行期异常,Runtime Exception),如果希望手动控制事务的回滚,可以通过 TransactionAspe ...

  4. java GUI简单记事本

    代码: import java.awt.*; import java.awt.event.*; import java.io.*; class MyMenu { //定义该窗体所需的组件,方便其他函数 ...

  5. PCB信号集

    每一个进程都有一个pcb进程控制块,用来控制进程的信息,同时信号在pcb中有两个队列去维护他,一个是未决信号集,每一位对应一个信号的状态,0,1,1表示未决态,另一个是信号屏蔽字(阻塞信号集),也就0 ...

  6. Android Studio中.9.png文件出错问题

    昨天使用别人的.9.png图片放在自己的android studio工程下使用,出现如下错误: :app:preBuild UP-TO-DATE :app:preDebugBuild UP-TO-DA ...

  7. Java初学练习答案(循环)

    /* 题目如下: 1 (for 循环)*编程找出四位整数abcd 中满足下述关系的数. (ab+cd)(ab+cd)=abcd 2 (循环)*读入一个整数n,输出如下图形 n = 3 * *** ** ...

  8. shiyandaima

    //jidaxiangronglei #include<iostream> #include<iostream> #include<iomanip> #includ ...

  9. devexpress设置皮肤、字体以及折叠菜单、伸缩Panel的实现

    1.为了体现系统的个性化,越来越多的系统增加了换肤功能.这里例举一个devexpress实现换肤的案例,效果图对比: 第二张图片中更换了皮肤与字体. 2.皮肤数据源绑定代码: //循环添加皮肤名称 f ...

  10. 深入探讨 CSS 特性检测 @supports 与 Modernizr

    什么是 CSS 特性检测?我们知道,前端技术日新月异的今天,各种新技术新属性层出不穷.在 CSS 层面亦不例外. 一些新属性能极大提升用户体验以及减少工程师的工作量,并且在当下的前端氛围下: 很多实验 ...