目录
一、条件测试
1、测试——test
测试表达式是否成立,若成立返回0,否则返回其他数值
格式1:test 条件表达式
格式2:[ 条件表达式 ]
2、文件测试
格式:[ 操作符 文件或目录 ]
注意:中括号两边要有空格
boole true(真) false(假)
返回码 0 非0 ##linux系统shell脚本里
1 0 ##java C语言里
常用的测试操作符
-d 测试 指定的对象是否为目录(directory),指定的目录是否存在
-e 测试目录或文件是否存在(Exist)
-f 测试是否为文件(File),指定的文件是否存在
-r 测试当前用户是否有权限读取(Read)
-w 测试当前用户是否有权限写入(Write)
-x 测试当前用户是否有权限执行(eXcute)
-L 测试文件是否为符号链接(软链接文件)
3、整数值比较
格式:
[ 整数变量1 操作符 整数变量2 ]
常用的操作符
操作符 说明
-eq 等于(==)
-gt 大于(>)
-lt 小于(<)
-ge 大于或等于(>=)
-le 小于或等于(<=)
-ne 不等于(!=)
4、字符串比较
[ "字符串1" = "字符串2" ] 或者 [ "字符串1" == "字符串2" ]
[ "字符串1" != "字符串2" ]
[ -z "字符串" ] -z:判断字符串是否为空,或者指定的变量是否为空值
[ -n "字符串" ] -n:检查是否有字符串存在
操作符 说明
= 字符串内容相同
!= 字符串内容不同,!号表示相反的意思
-z 字符串内容为空
-n 检查是否有字符串存在
5、浮点数的运算
方法一:echo "浮点运算字符串" | bc
方法二:awk 'BEGIN {print 浮点运算字符串}'
6、逻辑测试
格式:
[ 表达式1 ] && [ 表达式2 ] 等同于 [ 表达式1 -a 表达式2 ] [[ 表达式1 && 表达式2 ]]
[ 表达式1 ] || [ 表达式2 ] 等同于 [ 表达式1 -o 表达式2 ] [[ 表达式1 || 表达式2 ]]
常用操作符 说明
-a或&& 且,表达式的两边都需要成立
-o或▕▕ 或,只需要前后条件中一个成立
! 逻辑否
两个表达式在同一个[ ]中使用&&或 | | 时,需要再加个[ ]
7、三元运算符
java、C语言环境:
条件表达式?a:b
当条件表达式为真时,取a值;当条件表达式为假时,取b值
Shell脚本:
[ 表达式 ] && a || b
当表达式成立 取a值:否则取b值
二、if语句
1、单分支语句
如果只有一个判断式要进行,那么我们可以使用单分支的if语句。只有在条件成立时才会执行,否则不执行任何操作。
格式:
if [ 表达式 ];then
...
fi
例子:
2、双分支
格式:
if [ 表达式 ];then
...
else
...
fi
例子:
3、多分支
格式:
if [ 表达式 ];then
...
elif [ 表达式 ];then
...
elif [ 表达式 ];then
...
[else]
fi
例子
三、case
case 可以用来判断一个变量的不同取值
格式:
case 变量值 in
模式一)
命令序列
;;
模式二)
命令序列
;;
……
*)
默认命令序列
esac
注意点:
case行首必须以单词“in”,每一模式必须以单个右括号")"结束
双分号";;"表示命令序列的结束
模式字符串中,可以用方括号表示一个连续的范围,如"[0-9]";还可以使用竖杠|表示或,比如a|b
最后的*)表示默认模式,其中的*相当于通配符
例子
代码如下(示例):