1.  Shell中的测试命令

test命令是Shell编程中条件判断最常用的测试命令。格式为:

test 表达式

test命令也可以用中括号取代:

[ 表达式 ]

需要注意的是:表达式和两个中括号之间必须有空格

2.  测试文件属性

文件属性测试表达式用于测试文件的属性状态,包括文件是否可写入,可执行,文件是否存在,是否是目录等等。

文件属性测试表达式

-b file  测试文件是否是块设备(block device),是就返回真

-c file  测试文件是否为字符设备(char device,是就返回真

-r file  测试文件是否为只读

-w file  测试文件是否可写

-x file   测试文件是否可执行

-s file  测试文件是否存在且大于0

-d file  测试文件是否是目录

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

-e file   测试文件是否存在

范例:

测试文件存在且是块设备

    #!/bin/bash

   echo “Please  enter  the  file  name :”

read FILENAME

if test  -b $FILENAME ; then

cp $FILENAME  /dev

else

echo “$FILENAME is not a block device file” 

第四行的test –b是重点,可以换成-c –d 等参数进行检测

3.  测试数值

数值的测试包括相等测试、不相等测试、大于测试、大于等于测试等。

          常用的数值测试表达式

n1  –eq  n2    n1等于n2,则值为真    equal

n1  -ne  n2    n1不等于n2,则值为真   not equal

n1  -gt  n2     n1大于n2 ,则值为真   greater  than

n1  -lt  n2     n1小于n2,则值为真   less  than

n1  -ge  n2     n1 大于等于n2,则值为真   greater  equal

n1  -le  n2      n1小于等于n2 ,则值为真  less equal

   范例:

   相等测试

     #!/bin/bash

     echo “Please enter the first number:”

     read N1

     echo “Please enter the second number:”

     read N2

     if test $N1 –eq $N2 ;then

     echo “equal”

     else

     echo ”not equal”

     fi

4.  测试字符串

字符串测试包括相等测试、不相等测试、长度为零测试、长度不为0测试以及非空测试

字符串测试表达式

     -z  s1    如果字符串s1的长度为0,则为真

     -n  s1    如果字符串s1的长度不为0,则为真

     s1 = s2    如果字符串s1s2相等,则为真

     s1 != s2    如果字符串s1s2不相等,则为真

       s1    如果字符串s1不是空串,则为真

 

实例  相等测试

     #!/bin/bash

     echo “Please  enter  the  first  string :”

     read S1

     echo “Please  enter  the  second  string :”

     read S2

     if test $S1 = $S2 ;then

     echo “equal”

     else

     echo “not equal”

     fi

5.  测试逻辑运算符

测试命令可以由单个测试条件构成,也可以由多个测试条件构成。

         逻辑运算符

-a     二进制“与”操作符

-o     二进制“或”操作符

!      一元“非”操作符

实例:测试逻辑与

#!/bin/bash

read X

if test $X –ge 10 –a $X –le 50 ;then

echo “$X is between 10 and 50”

else

echo “$X is not between 10 and 50”

fi