test可以替换为[ expr ],例如: [ $name = stephen ]
[[ expr ]] 则可以表示正则表达式,例如: [[ $name == [Ss]tephen && $friend == "Jose" ]]
(( expr )) 表达方式和c语言保持一致, 例如: (( x == 2 && y == 3 ))
成功则返回0,失败返回1
[[ expr ]] 则可以表示正则表达式,例如: [[ $name == [Ss]tephen && $friend == "Jose" ]]
(( expr )) 表达方式和c语言保持一致, 例如: (( x == 2 && y == 3 ))
成功则返回0,失败返回1
| 判断操作符 | 判断为真的条件 |
| 字符串判断 | |
| [ stringA=stringB ] | stringA等于stringB |
| [ stringA==stringB ] | stringA等于stringB |
| [ stringA!=stringB ] | stringA不等于stringB |
| [ string ] | string不为空 |
| [ -z string ] | string长度为0 |
| [ -n string ] | string长度不为0 |
| 逻辑判断 | |
| [ stringA -a stringB ] | stringA和stringB都是真 |
| [ stringA -o stringB ] | stringA或stringB是真 |
| [ !string ] | string不为真 |
| 逻辑判断(复合判断) | |
| [[ pattern1 && pattern2 ]] | pattern1和pattern2都是真 |
| [[ pattern1 || pattern2 ] | pattern1或pattern2是真 |
| [[ !pattern ]] | pattern不为真 |
| 整数判断 | |
| [ intA -eq intB ] | intA等于intB |
| [ intA -ne intB ] | intA不等于intB |
| [ intA -gt intB ] | intA大于intB |
| [ intA -ge intB ] | intA大于等于intB |
| [ intA -lt intB ] | intA小于intB |
| [ intA -le intB ] | intA小于等于intB |
| 文件判断中的二进制操作 | |
| [ fileA -nt fileB ] | fileA比fileB新 |
| [ fileA -ot fileB ] | fileA比fileB旧 |
| [ fileA -ef fileB ] | fileA和fileB有相同的设备或者inode值 |
| 文件检验 | |
| [ -d $file ] or [[ -d $file ]] | file为目录且存在时为真 |
| [ -e $file ] or [[ -e $file ]] | file为文件且存在时为真 |
| [ -f $file ] or [[ -f $file ]] | file为非目录普通文件存在时为真 |
| [ -s $file ] or [[ -s $file ]] | file文件存在, 且长度不为0时为真 |
| [ -L $file ] or [[ -L $file ]] | file为链接符且存在时为真 |
| [ -r $file ] or [[ -r $file ]] | file文件存在且可读时为真 |
| [ -w $file ] or [[ -w $file ]] | file文件存在且可写时为真 |
| [ -x $file ] or [[ -x $file ]] | file文件存在且可执行时为真 |
转载:http://www.cnblogs.com/mchina/archive/2012/07/04/2575079.html
Shell 脚本条件判断
本文介绍 Shell 脚本中多种条件判断语句的使用方法,包括字符串、逻辑、整数及文件判断等。详细解释了每种判断方式的具体语法及应用场景。
1348

被折叠的 条评论
为什么被折叠?



