Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5763999
  • 博文数量: 291
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 7924
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-06 14:28
个人简介

阿里巴巴是个快乐的青年

文章分类

全部博文(291)

文章存档

2018年(21)

2017年(4)

2016年(5)

2015年(17)

2014年(68)

2013年(174)

2012年(2)

分类: LINUX

2013-07-20 19:56:06

        一个shell脚本能够对任何可以从命令行上被调用的命令的退出码进行测试,其中也包括你自己编写的脚本程序。这也就是要在所有自己编写的脚本程序的结尾包括一条exit命令的重要原因。
        在实际中,大多数脚本程序都广泛使用shell的布尔判断命令[或test,这二者在功能上差不多,只是为了增强可读性,当使用[命令时,我们还使用符号]来结尾。
        下面以一个最简单的条件为例来介绍test命令的用法:检查一个文件是否存在,具体如下:
        if test -f fred.c 
        then
        ...
        fi
        或者如下:
        if [ -f fred.c ]
        then
        ...
        fi
        test命令的退出码(表明条件是否满足)决定是否需要执行后面的条件语句。
        需要注意的是:必须在[符号和被检查的条件之间留出空格,同样test命令之后总是应该有一个空格。
        如果你喜欢把then和if放在同一行上,就必须要用一个分号把test语句与then分隔开,如下所示:
        if [ -f fred.c ]; then
        ...
        fi
        test命令可以使用的条件类型可以归为三类:
        (1)字符串比较
        string1 = string2:如果两个字符串相同则结果为真
        string1 != string2:如果两个字符串不同则结果为真
        -n string:如果字符串不为空则结果为真
        -z string:如果字符串为空(一个空串)则结果为真
        (2)算数比较
        expression1 -eq  expression2:如果两个表达式相等则结果为真
        expression1 -ne  expression2:如果两个表达式不等则结果为真
        expression1 -gt  expression2:如果表达式1大于表达式2则结果为真
        expression1 -ge  expression2如果表达式1大于或等于表达式2则结果为真
        expression1 -lt  expression2如果表达式1小于表达式2则结果为真
        expression1 -le  expression2如果表达式1小于或等于表达式2则结果为真
        ! expression如果表达式为假则结果为真,否则为真 
        (3)与文件有关的条件测试
        -d file:如果文件是一个目录则结果为真
        -e file:如果文件存在则结果为真,需要注意的是历史上-e选项不可抑制,所以通常使用-f选项
        -f file:如果文件是一个普通文件则结果为真
        -g file:如果文件的SGID位被设置则结果为真
        -r file:如果文件可读则结果为真
        -s file:如果文件的长度不为0则结果为真
        -u file:如果文件的SUID被设置则结果为真
        -w file:如果文件可写则结果为真
        -x file:如果文件可执行则结果为真
        接下来以测试/bin/bash文件状态来说明如何使用这些选项:
        #!/bin/sh
        if [ -f /bin/bash ]
        then
            echo "file /bin/bash exist"
        fi
    
        if [ -d /bin/bash ]
        then
            echo "/bin/bash is a directory"
        else
            echo "/bin/bash is NOT a directory"
        fi
        各种与文件有关的条件测试的结果为真的前提是文件必须存在。



阅读(1701) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

Bean_lee2013-07-20 22:03:49

man test

scq2099yt2013-07-20 19:56:15

文明上网,理性发言...