shell study-6day--shell-test测试命令

1、test测试命令
判断命令test一般用于脚本当中,可以简写为中括号[ ]。其会对跟随的条件进行判断,一般可以分为数值判断、字符串判断和文件判断。语法格式为test [ 判断条件 ],注意中括号[ ]与判断条件之间必须存在空格,还需注意判断条件的判断符号与比较值之间也需要存在空格。
如果是test单独使用,如果判断条件为真,那么echo $?会返回0,判断条件为假返回1。
(1)数值比较

参数  说明  			示例
-eq  等于则为真  		[$a-eq$b]
-ne  不等于则为真  	[$a-ne$b]
-gt  大于则为真  		[$a-gt$b]
-ge  大于等于则为真  [$a-ge$b]
-lt  小于则为真  		[$a-lt$b]
-le  小于等于则为真  [$a-le$b]
[root@test ~]# [ 2 -gt 5 ] && echo "ok" || echo "error"
error

Eg:比较两个数字大小

[root@test ~]# vi test.sh 
#!/bin/bash
read -p "输入num1:" a
read -p "输入num2:" b
if [ $a -eq $b ]
then
        echo "$a等于$b"
else
        echo "$a不等于$b"
fi
[root@test ~]# sh test.sh 
输入num1:1
输入num2:2
1不等于2
[root@test ~]#

(2)字符串比较

参数	  			说明  							示例
== 					等于则为真    			[$a” == “$b]
!=  				不相等则为真  			[$a!= “$b]
-z 	字符串   	字符串的长度为零则为真  		[ -z “$a]
-n 	字符串  	字符串的长度不为空则为真  	[ -n “$a]
str1 > str2  	str1 大于 str2 为真  		[ str1 \> str2 ]
str1 < str2  	str1 小于 str2 为真 			[ str1 \< str2 ]

注:大于号和小于号必须转义,要不然SHELL会把它当成重定向符号;
在test比较测试中,它使用的是ASCII顺序,大写字母是小于小写字母

[root@test ~]# [ n == m ] && echo "ok" || echo "error"     
error
[root@test ~]# vi test.sh 
#!/bin/bash
read -p "输入字符1:" a
read -p "输入字符2:" b
if [ $a == $b ]
then
        echo "$a等于$b"
else
        echo "$a不等于$b"
fi
  [root@test ~]# sh test.sh 
输入字符1:m
输入字符2:m
m等于m
[root@test ~]# sh test.sh 
输入字符1:n
输入字符2:m
n不等于m
[root@test ~]#                       
[root@test ~]# sh test.sh 
输入字符1:n
输入字符2:N
n不等于N
[root@test ~]# 

(3)文件比较

参数  					说明  						示例
-e 文件名.  如果文件或目录存在则为真 		 [ -e file ]
-r 文件名.  如果文件存在且可读则为真 		 [ -r file ]
-w 文件名.  如果文件存在且可写则为真  		 [ -w file ]
-x 文件名.  如果文件存在且可执行则为真  	 [ -x file ]
-s 文件名  如果文件存在且至少有一个字符则为真  [ -s file ]
-d 文件名.  如果文件存在且为目录则为真  		[ -d file ]
-f 文件名.  如果文件存在且为普通文件则为真    [ -f file ]
-c 文件名.  如果文件存在且为字符型文件则为真  [ -c file ]
-b 文件名..  如果文件存在且为块特殊文件则为真  [ -b file ]
file1 -nt fle2  检查 file1是否比file2新  [ file1 -nt file2 ]
file1 -ot file2  检查file1是否比file2旧  [ file1 -ot file2 ]
[root@test ~]# [ -d /etc/passwd ] && echo "是目录" || echo "不是目录"    
不是目录
[root@test ~]# test -r /etc/passwd && echo "可读" || echo "不可读"
可读

Eg:情况messages日志

[root@test ~]# vi clean.sh           
#!/bin/bash
if [ $USER != "root" ]
then
        echo "需要root用户"
        exit
fi

if [ ! -f /var/log/messages ]
then
        echo "文件不存在"
        exit

else
        echo " " >/var/log/messages

        echo "messages文件存在且已清空"
fi
[root@test ~]# more /var/log/messages
11111
[root@test ~]# sh clean.sh 
messages文件存在且已清空
[root@test ~]# more /var/log/messages
 
[root@test ~]# 

个人公众号,微信搜索:linux言叙
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值