按文件类型

符号 说明
-b 存在且为块文件
-e 文件存在
-f 存在且为普通文件
-d 存在且为目录
-L 存在且为符号链接文件
-p 存在且为管道文件
-s 存在且为非空文件
-S 存在且为套接字文件

采用形式:[-e 文件名],使用echo $?判断是否为真,返回0为真

root@jimo:~# ls
android-sdk.tgz  node_modules  VirtualBox VMs        模板  文档  桌面
git              test.txt      WebScarab.properties  视频  下载  桌面.zim-new~
GitBook          vimrc-copy    公共                  图片  音乐
root@jimo:~# test test.txt 
root@jimo:~# echo $?
0

root@jimo:~# test -e ddfdf
root@jimo:~# echo $?
1

注意前后的空格:

root@jimo:~# [-e test.txt] && echo yes || echo no
bash: [-e: 未找到命令
no
root@jimo:~# [ -e test.txt ] && echo yes || echo no
yes
root@jimo:~#

按文件权限

-r 存在且有读权限
-w 存在且有写权限
-x 存在且有执行权限
-u 存在且有sUID权限
-g 存在且有sGID权限
-k 存在且有sBit权限

只要有写权限就返回真,不管是谁的:

root@jimo:~# ls -l
-rw-r--r--  1 root root        42 2月   9 18:30 test.txt
root@jimo:~# [ -w test.txt ] && echo write || echo no
write

两个文件比较

文件1 -nt 文件2 1比2更新
文件1 -ot 文件2 old than:修改时间早,更旧
文件1 -ef 文件2 inode号一样(用于判断超链接)
root@jimo:~# ln test.txt test

root@jimo:~# ls -il
总用量 318840
12341118 -rw-r--r--  2 root root        42 2月   9 18:30 test
12341118 -rw-r--r--  2 root root        42 2月   9 18:30 test.txt

root@jimo:~# [ test -ef test.txt ] && echo yes || echo no 
yes
root@jimo:~#

两个整数比较

整数1 -eq 整数2 ==
-ne !=
-gt >
-lt <
-ge >=
-le <=
root@jimo:~# [ 10 -le 10 ] && echo yes || echo no 
yes
root@jimo:~# [ 10 -le 20 ] && echo yes || echo no 
yes

字符串判断

-z 为空
-n 非空
== 相等
!= 不等

注意双引号

root@jimo:~# a=""
root@jimo:~# [ -z $a ] && echo yes || echo no
yes
root@jimo:~# b=jimo
root@jimo:~# [ "$a" == "$b" ] && echo yes || echo no
no

多重条件判断

-a and
-o or

即逻辑判断

root@jimo:~# a=10
root@jimo:~# [ $a -ge 1 -a $a -lt 20  ] && echo yes || echo no
yes

results matching ""

    No results matching ""