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

  真为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 1
}expr $a + 1 &>/dev/null
RETRAVL1=$?expr $b + 1 &>/dev/null
RETRAVL2=$?test  $RETRAVL1 -eq 0 -a $RETRAVL2 -eq 0||{echo "Pls input two nums"exit 2
}[ $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.shif [ ! -d $Path ]
thenecho "No such dir,is creatinig $Path"mkdir $Path -p
fiif [ ! -f $Path/$File ]
thenecho "No such file,is creating $File"touch $Path/$Fileexit 0
fiecho "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 400 ]
thenecho "mem is not enough" |mail -s "mem warninig at $(date +%F-%X)" 18348087798@163.com         //要先安装sendmail
fi

转载于:https://www.cnblogs.com/along1226/p/4957148.html

shell中的条件表达式相关推荐

  1. 在Java语言的if语句是什么表达式,if语句中的条件表达式中只能使用

    if语句中的条件表达式中只能使用关系或逻辑表达式吗?别的人十句话都不会伤到小编,但你的一句话就可以把小编伤得撕心裂肺. 不是,可以用任意表达式. if语句是指编程语言(包括c语言,C#,,java,V ...

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

    原文:https://www.cnblogs.com/include/archive/2011/12/09/2307905.html shell括号 学习shell的时候总是被shell里的条件判断方 ...

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

    引用: http://www.51testing.com/?uid-7701-action-viewspace-itemid-13731 http://blog.csdn.net/sunboy_205 ...

  4. 如何在Scala中使用条件表达式 .

    条件表达式 Scala的if/else语法结构和Java或C++一样.不过,在Scala中if/else表达式有值,这个值就是跟在if或else之后的表达式的值.例如: if (x > 0) 1 ...

  5. C语言中的条件表达式

    条件运算符是C语言中唯一的三元运算符. 例如: x = (y < 0) ?  -y : y; 该语句的意思是"如果y小于0,那么x = -y; 否则,x = y ". 用If ...

  6. Python中的条件表达式

    Python中,while和if都是条件表达式,条件表达式中的条件语句不仅仅是比较运算符(>.<.==.!=等),还可以是其他运算符. 1 in与not in运算符 in与not in运算 ...

  7. shell中的条件判断和比较

    1  shell 的$! ,$?, $$,$@ $n        $1 the first parameter,$2 the second... $#        The number of co ...

  8. shell中的条件语句

     if-elif-else-fi语句 语法如下 if pipeline [pipeline-] then statements-if-true-1 [elif pipeline [pipeline ...

  9. shell 中的条件判断 “并且” “或者”

    1.并且 条件 c1并且条件c2 方式一: -a: and if [ c1 -a c2 ]; then - fi 方式二: if [ c1 ] && [ c2 ]; then - fi ...

最新文章

  1. 不想被AI降维打击?美国“四院院士”写的DL科普书了解一下
  2. Android 图片的帧动画
  3. [YTU]_2499( 处理成绩(c++类训练))
  4. 【OpenCV3】几何图形(直线、矩形、圆、椭圆、多边形等)绘制
  5. 如何将字典值写入一个文本文件?
  6. Android热修复技术原理详解(最新最全版本)
  7. 手把手教你研发属于自己的智能无人机
  8. 大量违规投放,青桔单车被紧急约谈
  9. Java将日期拆分成按周或月时间段统计
  10. 这是一台家庭计算机重启无效,我买了一台二手计算机,配置还可以,但有时会自动重启机器,这是为什? 爱问知识人...
  11. python可以用c_我们可以在Python中使用C代码吗?
  12. Linux 系统中随机数在 KVM 中的应用
  13. 高淇java什么方向,高淇Java笔记(数据类型和运算符、控制语句)
  14. 360也开源了一个 kubernetes 的管理后台系统 Wayne
  15. 两台计算机之间的远程连接
  16. Exception in thread “main“ java.lang.ArrayIndexOutOfBoundsException: 6 at lian39.main(lian39
  17. (8)香橙派+apache2与php+天猫精灵=自建平台语音支持--天猫精灵对接3
  18. 基于Python实现的黑白棋强化学习模型
  19. 数值计算(三)-插值法(2)牛顿插值法
  20. mysql数据库数据恢复

热门文章

  1. H3C V7平台下的IRF堆叠
  2. nginx同域名代理tomcat不同目录下的文件
  3. C# 导出word文档及批量导出word文档(2)
  4. android 反编译
  5. Android内核剖析 目录
  6. 根据开发提供的svn更新版本号从开发分支合并代码到测试分支工作目录的部分脚本...
  7. 成为DBA的艰辛之路————需要掌握一笔不小的知识
  8. CCNP-19 IS-IS试验2(BSCI)
  9. Linux_系统进程管理
  10. Mysql 获取当月和上个月第一天和最后一天的解决方案