Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2446657
  • 博文数量: 328
  • 博客积分: 4302
  • 博客等级: 上校
  • 技术积分: 5486
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-01 11:14
个人简介

悲剧,绝对的悲剧,悲剧中的悲剧。

文章分类

全部博文(328)

文章存档

2017年(6)

2016年(18)

2015年(28)

2014年(73)

2013年(62)

2012年(58)

2011年(55)

2010年(28)

分类: 系统运维

2010-07-01 14:51:31

shell 判断语句

流程控制 "if" 表达式 如果条件为真则执行then后面的部分:

if ....; then
  ....
elif ....; then
  ....
else
  ....
fi


大多数情况下,可以使用测试命令来对条件进行测试。比如可以比较字符串、判断文件是否存在及是否可读等等…   通常用" [ ] "来表示条件测试。注意这里的空格很重要。要确保方括号的空格。
[ -f "somefile" ] :判断是否是一个文件
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
[ -n "$var" ] :判断$var变量是否有值
[ "$a" = "$b" ] :判断$a和$b是否相等     

  -r file     用户可读为真
  -w file     用户可写为真
  -x file     用户可执行为真
  -f file     文件为正规文件为真
  -d file     文件为目录为真
  -c file     文件为字符特殊文件为真
  -b file     文件为块特殊文件为真
  -s file     文件大小非0时为真
  -t file     当文件描述符(默认为1)指定的设备为终端时为真


#########################################################

含条件选择的shell脚本
    对于不含变量的任务简单shell脚本一般能胜任。但在执行一些决策任务时,就需要包含if/then的条件判断了。shell脚本编程支持此类运算,包 括比较运算、判断文件是否存在等。基本的if条件命令选项有: -eq —比较两个参数是否相等(例如,if [ 2 –eq 5 ])
-ne —比较两个参数是否不相等
-lt —参数1是否小于参数2
-le —参数1是否小于等于参数2
-gt —参数1是否大于参数2
-ge —参数1是否大于等于参数2
-f — 检查某文件是否存在(例如,if [ -f "filename" ])
-d — 检查目录是否存在
几乎所有的判断都可以用这些比较运算符实现。脚本中常用-f命令选项在执行某一文件之前检查它是否存在。

##################################################################

1)判断表达式
if test   (表达式为真)
if test !表达式为假
test 表达式1 –a 表达式2                两个表达式都为真
test 表达式1 –o 表达式2                 两个表达式有一个为真

2)判断字符串
test –n 字符串                                   字符串的长度非零
test –z 字符串                                  字符串的长度为零
test 字符串1=字符串2                    字符串相等
test 字符串1!=字符串2             字符串不等

3)判断整数
test 整数1 –eq 整数2                      整数相等
test 整数1 –ge 整数2                      整数1大于等于整数2
test 整数1 –gt 整数2                      整数1大于整数2
test 整数1 –le 整数2                      整数1小于等于整数2
test 整数1 –lt 整数2                      整数1小于整数2
test 整数1 –ne 整数2                      整数1不等于整数2


4)判断文件
test   File1 –ef   File2                         两个文件具有同样的设备号和i结点号
test   File1 –nt   File2                         文件1比文件2 新
test   File1 –ot   File2                         文件1比文件2 旧
test –b File                                        文件存在并且是块设备文件
test –c File                                        文件存在并且是字符设备文件
test –d File                                        文件存在并且是目录
test –e File                                        文件存在
test –f File                                            文件存在并且是正规文件
test –g File                                        文件存在并且是设置了组ID
test –G File                                        文件存在并且属于有效组ID
test –h File                                        文件存在并且是一个符号链接(同-L)
test –k File                                        文件存在并且设置了sticky位
test –b File                                        文件存在并且是块设备文件
test –L File                                        文件存在并且是一个符号链接(同-h)
test –o File                                        文件存在并且属于有效用户ID
test –p File                                        文件存在并且是一个命名管道
test –r File                                            文件存在并且可读
test –s File                                        文件存在并且是一个套接字
test –t FD                                           文件描述符是在一个终端打开的
test –u File                                        文件存在并且设置了它的set-user-id位
test –w File                                        文件存在并且可写
test –x File                                        文件存在并且可执行

转载自:
阅读(4078) | 评论(0) | 转发(0) |
0

上一篇:Shell 编程基础

下一篇:浅析ldd命令

给主人留下些什么吧!~~