Shell条件测试与条件执行

  • Post author:
  • Post category:其他


1. 条件测试

语法格式:

test 判断语句

或者:

[ 判断语句 ]

(1)关于文件属性的测试

# file 指任意一个文件


[ -e file ]

#文件

存在

则为真


[ -f file ]

#文件

存在且为常规文件

为真


[ -d file ]

#文件

存在且是一个目录

为真


[ -s file ]

#文件

存在且不为空

为真

(2)关于字符串测试操作符


[ -z <字符串> ]

#如果字符串

为空

则为真


[ -n <字符串> ]

#如果字符串

不为空

则为真


[ <字符串1> = <字符串2> ]

#串1和串2

相同

为真


[ <字符串1> != <字符串2> ]

#串1和串2

不相同

为真

(3)关于算术测试的操作符


[ <数字1> -eq <数字2> ]

#数字1和数字2

相等

则为真


[ <数字1> -ne <数字2> ]

#数字1和数字2

不相等

则为真


[ <数字1> -le <数字2> ]

#数字1

<=

数字2则为真

less than or equal(小于或等于)


[ <数字1> -ge <数字2> ]

#数字1

>=

数字2则为真

greater than or equal(大于或等于)


[ <数字1> -lt <数字2> ]

#数字1

<

数字2则为真

less than(小于)


[ <数字1> -gt <数字2> ]

#数字1

>

数字2则为真

greater than(大于)

2. if结构的语法格式

if 判断条件; then
    if内语句
else
    else内语句
fi

3. 条件执行

命令1 && 命令2        #命令1执行成功(状态码0)才执行命令2

命令1 || 命令2        #命令1执行失败(状态码不为0)才执行命令2

! 表达式                 #测试表达式是否为真或假

4. case语句

实例1:

#根据传入参数执行相应函数
case "$1" in
    start)
	start #匹配到start时候执行的语句
	;;
    stop)
	stop    #匹配到stop时候执行的语句
	;;
    restart)
	restart    #匹配到restart时候执行的语句
	;;
    *)        #匹配其他情况
	echo "Usage:$0 {start|stop|restart}"
	exit 1
	;;
esac

实例2:

#!/bin/bash

#获取当前的星期
NOW=$(date +%a)
case $NOW in
    Mon)
	echo "Full backup"
    ;;
    Tue | Wed | Thu | Fri)
	echo "Partial backup"
    ;;
    Sat | Sun)
	echo "No backup"
    ;;
    *) 
    echo "nothing to do"
    ;;
esac



版权声明:本文为weixin_49561506原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。