按文件类型
符号 |
说明 |
-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
字符串判断
注意双引号
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
多重条件判断
即逻辑判断
root@jimo:~# a=10
root@jimo:~# [ $a -ge 1 -a $a -lt 20 ] && echo yes || echo no
yes