闇の光

读书笔记 经验感受

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

Conditions

依照惯例,大多数脚本使用“[”或者“test”来完成shell的boolean条件比较。实例如下:

if test -f fred.c
then
...
fi
if [ -f fred.c ]
then
...
fi

注意在“[”之间须置空格于其间。同理,在“test”后面也应有空格。如果你习惯把“then”同“if”置于同一行,则需以分号间隔。如下所示:
if [ -f fred.c ];then
...
fi
“[”和“test”用于三种比较类型,分别是:字符串比较、算术比较、文件条件比较。

下表是条件比较的类型:

条件比较类型
String比较结果
string 1 = string 2strings相等该命题为真
string 1 != string 2strings不等该命题为真
-n stringstring值不为空该命题为真
-z stringstrings值为空该命题为真
算术比较结果
表达式1 -eq 表达式2表达式值相等该命题为真
表达式1 -ne 表达式2表达式值不等该命题为真
表达式1 -gt 表达式2表达式1值大于表达式2该命题为真
表达式1 -ge 表达式2表达式1值大于或等于表达式2该命题为真
表达式1 -lt 表达式2表达式1值小于表达式2该命题为真
表达式1 -le 表达式2表达式1值小于或等于表达式2该命题为真
!表达式表达式为假的该命题为真
File条件比较结果
-d file该file为文件目录该命题为真
-e file该file文件存在该命题为真(-e选项不利于移植,故更多选用-f)
-f file该file文件为一般文件该命题为真该命题为真
-g file该file文件设置了set-group-id该命题为真
-r file该file文件为可读文件该命题为真
-s file该file文件大小不为0该命题为真
-u file该file文件设置了set-user-id该命题为真
-w file该file文件为可写文件该命题为真
-x file该file文件为可执行文件该命题为真

实例如下:

#!/bin/sh

if [ -f /bin/bash ]
then
  echo "file /bin/bash exists"
fi

if [ -d /bin/bash ]
then
  echo "/bin/bash is a directory"
else
  echo "/bin/bash is not a directory"
fi
exit 0
posted on 2008-03-05 14:47  taizi  阅读(190)  评论(0编辑  收藏  举报