您的位置:首页 > 其它

ABS之条件测试文件测试操作符

2012-02-15 15:45 162 查看
if/then结构用来判断命令列表的退出状态码是否为0 如果成功的话, 那么就执行接下来的一个或多个命令.

echo 什么是真!!!!!!!!

if [ 测试条件为真 ]

then

command

command

else #可选,如果原始的条件判断的结果为假,那么在这里添加默认的代码来执行

command

command

fi

如果if then 在同一行

if [ -x "$test" ] ; then

else if和elif

elif 是else if 的缩写,作用是在外部的判断结构中在嵌入一个内部的if then 结构

test, /usr/bin/test, [ ], 和/usr/bin/[都是等价命令

[[]] 比[] 结构更加通用,这是一个扩展的test命令

使用[[ ... ]]条件判断结构, 而不是[ ... ], 能够防止脚本中的许多逻辑错误. 比如, &&, ||, <, 和> 操作符能够正常存在于[[ ]]条件判断结构中, 但是如果出现在[ ]结构中的话, 会报错.

如:

#!/bin/bash

var1=20

var2=22

[ "$var1" -ne "$var2" ] && echo "$var1 is not equal to $var2"

#测试var1是否等于var2

home=/home/bozo

[ -d "$home" ] || echo "$home directory does not exist "

&&是不是不管前面的命令执行如何,都要执行后面的命令,|| 是不是前面的命令执行失

败就执行后面的命令

文件测试操作符

-e 文件存在

-f 这个文件是一个一般文件,不是目录或设备文件

-s 文件大小不为零

-d 这是一个目录

-b 块设备

-c 字符设备 (键盘,声卡等)

-p 文件是一个管道

-h 符号链接

-L 符号链接

-S 这是一个socket

-t 文件(描述符)被关联到一个终端设备上

这个测试选项一般被用来检测脚本中的stdin([ -t 0 ]) 或者stdout([ -t 1 ])是否来自于一个终端.

-r -w -x 分别表示文件是否有可读可写可执行权限

-g -u 分别表示 setgid setuid

-O 判断你是否是文件的拥有者

-G 文件GID是否与你相同

-N 从文件上一次被读取到现在为止,文件是否被修改过

file1 -nt file2 文件file1 比文件flie2新

file1 -ot file2 文件file1 比文件flie2旧

file1 -ef file2 文件file1和文件file2是相同的硬链接

!反转上面-nt -ot -ef 所有的测试结果,如果没有条件给出,返回真值

其他比较符号!

整数比较!

-eq 等于

-ne 不等于

-gt 大于

-ge 大于等于

-lt 小于

-le 小于等于

<=, < ,> ,>=,用在双括号中使用

如:(("$a" < "$b"))

字符串比较

=

if [ "$a" = "$b" ]

==与=等价

!=不等号

if [ "$a" != "$b" ]

例子:

#!/bin/bash

a=4

b=5

echo

if [ "$a" -ne "$b" ]

then

echo "$a is not equal to $b"

else "(arithentic comparison)"

fi

echo

if [ "$a" != "$b" ]

then

echo "$a is not equal to $b"

else "(string comparison)"

fi

可以通过if/then结构来使用嵌套的条件测试. 最终的结果和上面使用&&混合比较操作符的结果是相同的.

1 if [ condition1 ]

2 then

3 if [ condition2 ]

4 then

5 do-something # But only if both "condition1" and "condition2" valid.

6 fi

7 fi
本文出自 “风光坏家伙” 博客,转载请与作者联系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐