条件测试

sh/bash/dash/ksh/zsh等Shell脚本
回复
fjchenq
帖子: 160
注册时间: 2006-12-14 19:14

条件测试

#1

帖子 fjchenq » 2006-12-26 16:40

#!/bin/sh
#test 条件测试
#test 有两种格式
# test 条件 或 [ 条件 ]
# -d 目录 -s 文件长度大于0、非空
# -f 正规文件 -w 可写
# -L 符号连接 -u 文件有suid位设置
# -r 可读 -x 可执行
#
cd ..
ls -l menu.lst
[ -w menu.lst ]
echo $?

test -w menu.lst
echo $?

test -x menu.lst
echo $?

# -a 逻辑与,操作符两边均为真,结果为真,否则为假
# -o 逻辑或,操作符两边一边为真,结果为真
# ! 逻辑否,条件假,结果为真

[ -w menu.lst -a -r menu.lst ]
echo $?
############################################
#字符串测试
# test "string" test string_operator "string" test "string" string_operator "string"
# [ string_operator string ] [ string string_operator string ]
# = 两个字符串相等 != 两个字符串不等
# -z 空串 -n 非空串
#############################################
echo "测试Editor是否为空?"
[ -z $EDITOR ]
echo $?

[ "tape" != "tape" ]
echo $?

# 测试数值
# "number" 数值操作符 "number"
# [ "number" 数值操作符 "number" ]
# -eq 数值相等 -ne 数值不相等
# -gt 第一个数大于第二个数 -lt 第一个数小于第二个数
# -ge第一个数大于等于第二个数 -le 第一个数小于等于第二个数
#
number=130
[ "$number" -eq "131" ]
echo $?

[ "$number" -gt "120" ]
echo $?

[ "$number" -le "120" ]
echo $?

[ "990" -le "995" -a "123" -gt "33" ]
echo $?

#expr 命令一般用于整数值,但也可用于字符串
# expr argument operator arguement
expr 10 + 10
expr 100 - 50
expr 3 / 3
expr 3 / 6
expr 30 / 3 / 2
expr 30 / 3
expr 30 \* 3
expr 30 \* 9

# 增量计数
#
LOOP=0
LOOP=`expr $LOOP + 1 `

#数值测试
#expr rr + 1
value=12
expr $value + 10 >/dev/null 2>&1
echo $?

value=hello
expr $value + 10 >/dev/null 2>&1
echo $?

expr $value + 10 >/dev/null 2>&1
回复