Conditions
依照惯例,大多数脚本使用“[”或者“test”来完成shell的boolean条件比较。实例如下:
if test -f fred.c then ... fi
if [ -f fred.c ] then ... fi
if [ -f fred.c ];then ... fi
下表是条件比较的类型:
String比较 | 结果 |
---|---|
string 1 = string 2 | strings相等该命题为真 |
string 1 != string 2 | strings不等该命题为真 |
-n string | string值不为空该命题为真 |
-z string | strings值为空该命题为真 |
算术比较 | 结果 |
表达式1 -eq 表达式2 | 表达式值相等该命题为真 |
表达式1 -ne 表达式2 | 表达式值不等该命题为真 |
表达式1 -gt 表达式2 | 表达式1值大于表达式2该命题为真 |
表达式1 -ge 表达式2 | 表达式1值大于或等于表达式2该命题为真 |
表达式1 -lt 表达式2 | 表达式1值小于表达式2该命题为真 |
表达式1 -le 表达式2 | 表达式1值小于或等于表达式2该命题为真 |
!表达式 | 表达式为假的该命题为真 |
File条件比较 | 结果 |
-d file | 该file为文件目录该命题为真 |
-e file | 该file文件存在该命题为真(-e选项不利于移植,故更多选用-f) |
-f file | 该file文件为一般文件该命题为真该命题为真 |
-g file | 该file文件设置了set-group-id该命题为真 |
-r file | 该file文件为可读文件该命题为真 |
-s file | 该file文件大小不为0该命题为真 |
-u file | 该file文件设置了set-user-id该命题为真 |
-w file | 该file文件为可写文件该命题为真 |
-x file | 该file文件为可执行文件该命题为真 |
实例如下:
#!/bin/sh if [ -f /bin/bash ] then echo "file /bin/bash exists" fi if [ -d /bin/bash ] then echo "/bin/bash is a directory" else echo "/bin/bash is not a directory" fi exit 0