2.shell中的基本命令---test

1.test变量测试语句命令

test:是变量测试语句,shell中的 test 命令可用于检查某个条件是否成立,它可以进行数值字符文件三个方面的测试
命令格式如下:
test 测试条件
注意:在流程控制语句中,可以省略test,直接写成[ 测试条件 ]
可测试范围如下:
数值字符串文件

2.test—字符串测试和变量测试

参数说明
=或者==等于则为真
!=不相等则为真
-z 字符串字符串长度为零则为真(包括字符串为null的情况)
-n 字符串字符串长度不为零则为真(包括字符串为null的情况)

注意

  • 比较符号用==或者=等价,但是要注意的是等号两侧有空格,这是unix shell的书写要求规范.
  • []的两侧也应该有空格.
  • 若待比较的变量是$variate,而变量variate之前没有定义,则$variate获取到的值可理解为null值
  • 若待比较的变量是"$variate",而变量variate之前没有定义,则"$variate"获取到的值为""空字符串
  • 若在没有定义变量时,就使用了变量会出现错误
    为了避免出现这种错误,再判断两个字符串是否相等时,(1)可用"$variate"来获取字符串的值后,再做比较;(2)在获取值后面添加一个固定的字符,从而使得变量的获取不为null,例如${variate}x = "test"x(字符x为额外添加的固定字符),这样设定后,variate在没有定义的情况下也不会报错

练习1判断字符串是否为空
1.判断为空

#! /bin/bash
if [ -z $variate ] ; then
        echo 'variate is empty!'
fi

结果:
variate is empty!

#! /bin/bash
variate=
if [ -z $variate ] ; then
        echo 'variate is empty!'
fi

结果:
variate is empty!

#! /bin/bash
param=''
if [ -z $variate ] ; then
        echo 'variate is empty!'
fi

结果:
variate is empty!

#! /bin/bash
if [ -z "$variate" ] ; then
        echo 'variate is empty!'
fi

结果:
variate is empty!

#! /bin/bash
variate=''
if [ -z "$variate" ] ; then
        echo 'variate is empty!'
fi

结果:
variate is empty!

总结:
-z str这里的str字符串判断为空的依据包括空串null,即获取得到的值为""或者null时都为真

2.判断不为空:

#! /bin/bash
if [ -n $variate ] ; then
        echo 'param is not empty!'
fi

结果:
variate is not empty!

#! /bin/bash
variate=
if [ -n $variate ] ; then
        echo 'variate is not empty!'
fi

结果:
variate is not empty!

#! /bin/bash
if [ -n "$variate" ] ; then
        echo 'variate is not empty!'
fi

结果:
无结果输出

#! /bin/bash
variate=
if [ -n "$variate" ] ; then
        echo 'variate is not empty!'
fi

结果:
无结果输出

总结:
1.variate=不赋具体的值时完全的等价于没有定义变量.
2.$variate不加双引号时只是获取值,可能为null值,比如第1点中的情况下就为null值,而"$variate"获取得到的值永远不为null,在第1点情况下的值为"".
建议获取是条件写成[ -n “$variate” ]

3.test—数值测试

参数说明
-eq等于则为真
-ne不等于则为真
-gt大于则为真
-ge大于等于则为真
-lt小于则为真
-le小于等于则为真

在这里插入图片描述
练习2判断a和b是否相等

#! /bin/bash
a=1
b=2
if [ $a -eq $b ]
then
        echo 'a=b'
else
        echo 'a!=b'
fi

结果:
a!=b

4.test—文件测试

参数说明
-e 文件名如果文件存在则为真
-r 文件名如果文件存在且可读则为真
-w 文件名如果文件存在且可写则为真
-x 文件名如果文件存在且可执行则为真
-s 文件名如果文件存在且至少有一个字符则为真
-d 文件名如果文件存在且为目录则为真
-f 文件名如果文件存在且为普通文件则为真
-L 文件名如果文件存在且为软链接则为真
-S 文件名如果文件存在且为套接字则为真
-c 文件名如果文件存在且为字符型特殊文件(字符设备)则为真
-b 文件名如果文件存在且为块特殊文件(块设备)则为真
-a两者都满足
-o至少满足一个
file1 -ef file2file1与file2使用同一个结点区域则为真
file1 -nl file2file1比file2建立时间晚则为真
file1 -ol file2file1比file2建立时间早则为真

练习3:根的使用量超过百分之30,会在/var/log/messages中产生报警提示"warning:System root dir will full !!!"每分钟检测一次

vim check.sh
	#!/bin/bash/
	[ `df / | tail -n 1 | awk '{print $5}' | cut -d % -f 1` -ge "30" ]&&{
        	logger Warning: System root dir is full !!!
	}
	at now+1min <<EOF
	/root/check.sh
	EOF
chmod +x check.sh
sh check.sh
tail /var/log/messages

在这里插入图片描述
在这里插入图片描述
练习4判断文件类型(是否存在,普通文件,软链接,目录)

vim check_file.sh
	#!/bin/bash
	[ -z "$1" ]&&{
        	echo "Please Input filename following script!!!"
        	exit
	}

	[ -e "$1" ]||{
        	echo "$1 is not exit."
        	exit
	}

	[ -L "$1" ]&&{
        	echo "$1 is softlink file."
        	exit
	}

	[ -f "$1" ]&&{
        	echo "$1 is common file."
        	exit
	}

	[ -d "$1" ]&&{
        	echo "$1 is directory."
        	exit
	}

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值