shell 判断语句

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

条件判断用 "[ " + 条件 + " ]" 来括住条件:注意这里的空格很重要。要确保方括号的空格。

1)字符串判断

if [ $str1 = $str2 ]     = :当两个串有相同内容、长度时为真 ( 用"==" 与 "=" 是一样的意思)
if [ $str1 != $str2 ]     != :当串str1和str2不等时为真
if [ -n $str1 ]       -n :当串的长度大于0时为真(串非空)
if [ -z $str1 ]        -z :当串的长度为0时为真(空串)
if [ $str1 ]           当串str1为非空时为真

2)数字判断

if [ $int1 -eq $int2 ]    -eq:两数相等为真
if [ $int1 -ne $int2 ]    -ne:两数不等为真
if [ $int1 -gt $int2 ]     -gt:int1大于int2为真
if [ $int1 -ge $int2 ]    -ge:int1大于等于int2为真
if [ $int1 -lt $int2 ]       -lt:int1小于int2为真
if [ $int1 -le $int2 ]     -le:int1小于等于int2为真

3)文件判断

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

[ -f "somefile" ] :判断是否是一个文件
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
[ -n "$var" ] :判断$var变量是否有值
[ "$a" = "$b" ] :判断$a和$b是否相等

3)复合条件逻辑判断

if [ $str -a "$a" = "$b" ]                      -a 位与:当串str1为非空时为真 且   $a 与 $b 相等
if [ $int1 -eq $int2 -o -f "somefile" ]   -o 位或:两整数相等,或 文件存在
if [ !$str ]                                               !    位非:串str1为非空为真,取反
  


    对于不含变量的任务简单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                                        文件存在并且可执行

原文:http://hi.baidu.com/dnssy/item/5b7a391dc7dae4fe746a8415

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值