码迷,mamicode.com
首页 > 系统相关 > 详细

shell中的条件表达式

时间:2015-11-11 20:44:27      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:

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

  真为1,假为0

条件测试的表达式

  [expression]

  [[expression]]

  test expression

常用的:

 单目:

  -e  File  测试文件是否存在

  -f  File  测试文件是否是普通文件

  -d  File 测试指定路径是否是目录

  -r  File 测试文件是否有写的权限

  -w  File 测试文件是否有写的权限

  -x  File测试文件是否有执行的权限

  -z:判断指定的变量是否存在值

  -n:测试字符是否为空 空为真

  !:逻辑非

 双目:

  == 相等为真

  != 不等为真

  >  大于为真

  <  小于为真

  -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中的条件表达式

标签:

原文地址:http://www.cnblogs.com/along1226/p/4957148.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!