bash中的条件判断:if语句
if语法: if 判断条件 0为真 其他都为假
单分支if语句:
if 判断条件; then
statement1
statement2
...
fi
双分支的if语句:
if 判断条件; then
statement1
statement2
...
else
statement3
statement4
...
fi
多分支的if语句:
if 判断条件1; then
statement1
...
elif 判断条件2; then
statement2
...
elif 判断条件3; then
statement3
...
else
statement4
...
fi
条件测试类型
1、条件测试表达式
[ expression ] 括号两端必须要有空格
[[ expression ]] 括号两端必须要有空格
test expression
组合测试条件:
-a:and
-o:or
!:取非
2、整数比较
-eq 测试两个整数是否相等
-ne 测试两个整数是否不等
-gt 测试一个数是否大于另一个数
-lt 测试一个数是否小于另一个数
-ge 大于或等于
-le 小于或等于
命令间的逻辑关系
逻辑与:&&
第一个条件为假 第二个条件不用在判断
第一个条件为真,第二个条件必须得判断
逻辑或:||
3、字符串比较
== 等于 两边要有空格
!= 不等
> 大于
< 小于
4、文件测试
-z string 测试指定字符是否为空,空着真,非空为假
-n string 测试指定字符串是否为不空,空为假 非空为真
-e FILE 测试文件是否存在
-f file 测试文件是否为普通文件
-d file 测试指定路径是否为目录
-r file 测试文件对当前用户是否可读
-w file 测试文件对当前用户是否可写
-x file 测试文件对当前用户是都可执行
-z 是否为空 为空则为真
-a 是否不空
练习
判断当前系统上是否有用户的默认shell为bash;
如果有,就显示有多少个这类用户;否则,就显示没有这类用户;
#!/bin/bash
grep "bash$" /etc/passwd &> /dev/null
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo "grep "bash$" /etc/passwd | wc -l"
else
echo "no such user"
fi