您的位置:首页 > 运维架构 > Linux

Linux下test命令使用

2016-06-19 11:13 711 查看
test命令格式:

[cpp] view
plain copy








test condition

通常,在if-then-else语句中,用[]代替,即[ condition ]。注意:方括号两边都要用空格。

1、数值比较

===========================================================

比 较 描 述

-----------------------------------------------------------

n1 -eq n2 检查n1是否与n2相等 (equal)

n1 -ge n2 检查n1是否大于或等于n2 (greater and equal)

n1 -gt n2 检查n1是否大于n2 (greater than)

n1 -le n2 检查n1是否小于或等于n2 (less and equal)

n1 -lt n2 检查n1是否小于n2 (less than)

n1 -ne n2 检查n1是否不等于n2 (not equal)

===========================================================


例子:


[cpp] view
plain copy








#!/bin/bash

val1=10

val2=11

if [ $val1 -gt 5 ]

then

echo "The test value $val1 is greater than 5"

fi

if [ $val1 -eq $val2 ]

then

echo "The vaules are equal"

else

echo "The values are different"

fi

2、字符串比较

===========================================================

比 较 描 述

-----------------------------------------------------------

str1 = str2 检查str1是否和str2相同

str1 != str2 检查str1是否和str2不同

str1 < str2 检查str1是否比str2小

str1 > str2 检查str1是否比str2大

-n str1 检查str1的长度是否非0

-z str1 检查str1的长度是否为0

===========================================================



需要注意的是:

- 字符串比较大于小于号必须转义,即加反斜线。

- 字符串比较的顺序是按ASCII表的顺序的,大写字母比小写字母的值小。


文件比较

=======


这是shell编程中最强大的也是最常用到的比较。test命令允许你测试Linux文件系统上文件和目录的状态,如下表:

==================================================================

比 较 描 述

------------------------------------------------------------------

-d file 检查file是否存在并是一个目录

-e file 检查file是否存在

-f file 检查file是否存在并是一个文件

-r file 检查file是否存在并可读

-s file 检查file是否存在并非空

-w file 检查file是否存在并可写

-x file 检查file是否存在并可执行

-O file 检查file是否存在并属当前用户所有

-G file 检查file是否存在并且默认组与当前用户相同

file1 -nt file2 检查file1是否比file2新

file1 -ot file2 检查file1是否比file2旧

==================================================================


3、检查目录

-d测试会检查指定的文件名是否在系统上以目录形式存在。当写文件到某个目录之前,或者是将文件放置到某个目录位置之前时,这会非常有用。

[cpp] view
plain copy








#!/bin/bash

if [ -d $HOME ]

then

echo "Your HOME directory exists"

cd $HOME

ls -a

else

echo "There is a problem with your HOME directory"

fi

上面代码使用了-d测试条件来检查用户的$HOME目录是否存在。如果它存在的话,它将继续使用cd命令来切到$HOME目录并进行显示目录下的文件。

4、检查对象是否存在

-e比较允许你在脚本中使用对象前检查文件或目录对象是否存在:

[cpp] view
plain copy








#!/bin/bash

# checking if a directory exists

if [ -e $HOME ]

then

echo "OK on the directory, now to check the file"

# checking if a file exists

if [ -e $HOME/testing ]

then

# the file exists, append date to it

echo "Appending date to existing file"

date >> $HOME/testing

else

# the file does not exist, create a new file

echo "Creating new file"

echo > $HOME/testing

fi

else

echo "Sorry, you do not have a HOME directory"

fi

5、检查文件

-e比较适用于文件和目录。但要确定指定的对象是个文件,你必须用-f比较:

[cpp] view
plain copy








#!/bin/bash

# check if a file

if [ -e $HOME ]

then

echo "The object exists, is it a file?"

if [ -f $HOME ]

then

echo "Yes, it is a file!"

else

echo "No, it is not a file!"

if [ -f $HOME/.bash_history ]

then

echo "But this is a file!"

fi

fi

else

echo "Sorry, the object does not exist"

fi

6、检查是否可读

在尝试从文件中读取数据之前,最好先测试一下是否能读文件。可以用-r测试。

7、检查空文件

用-s来检查文件是否为空,尤其是在你要删除文件时。当-s比较成功时要特别小心,它说明文件中有数据。

8、检查是否可写

-w比较用来判断你是否对文件有可写权限。

9、检查是否可执行

-x比较是一个简便的断判断你对某个特定文件是否有执行权限的方法。虽然可能大多数命令用不到它,但如果你要在shell中运行大量脚本,它可能很方便。

10、检查所属关系

-O比较允许你轻松地测试你是否是文件的属主。

11、检查默认属组关系

-G比较会检查文件的默认组,如果它匹配了用户的默认组,那就通过了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: