目录
一、条件测试
1.1test命令
测试特定的表达式是否成立,当条件成立,测试语句的返回值为0,否则为其他数值 。
格式:
test 条件表达式
或 [ 条件表达式 ] (条件表达式的两边都需要有空格,且此方法更为常用)
1.2文件测试
1.2.1文件测试常见选项
eg1:
eg2:
eg3:可以使用&&和echo一起用
eg4:可以和||一起用
eg5:比较两个文件
1.3整数值比较
格式:
[ 整数1 操作符 整数2 ]
常见测试操作符:
eg1:查询当前目录下的文件数是否大于10,如果大于,则进行提示。
[root@localhost ~]#ls |wc -l
27
[root@localhost ~]#test `ls |wc -l` -gt 10 && echo 文件数大于10
文件数大于10
eg2:查看系统内存是否低于1024M,如果低于则提示。
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 1823 330 804 9 688 1271
Swap: 3815 0 3815
[root@localhost ~]# free -m | grep "Mem"
Mem: 1823 330 804 9 688 1270
[root@localhost ~]# free -m | grep "Mem" | awk '{print $4}'
803
[root@localhost ~]# free=`free -m | grep "Mem" | awk '{print $4}'`
[root@localhost ~]# echo $free
803
[root@localhost ~]# test `echo $free` -lt 1024 && echo "内存不足1024M"
内存不足1024M
1.4字符串比较
格式:
[ 字符串1 = 字符串2 ] #判断是否相等
[ 字符串1 != 字符串2 ] #判断是否不等
[ -z 字符串 ] #判断字符串内容是否为空
操作符:
eg: 判断当前系统语言环境是否为“us.en”,如果不是则提示
[root@localhost ~]#echo $LANG
zh_CN.UTF-8
[root@localhost ~]#test `echo $LANG`="us.en"&&echo 当前系统语言不是us.en,当前系统语言为`echo $LANG`当前系统语言不是us.en,当前系统语言为zh_CN.UTF-8
1.5逻辑测试
格式:
[ 表达式1 ] 操作符 [ 表达式2 ]
命令1 操作符 命令2
操作符:
二、if语句
2.1单分支结构
格式:
if [ 条件判断式 ]; than
当条件判断成立时,执行一条或多条命令
fi
如果只有一个判断式要进行,那么我们可以使用单分支的if语句 ,只有在条件成立时才会执行,否则不执行任何操作
eg:使用单分支if语句判断test文件是否存在
[root@localhost ~]#if test -e data; then echo 文件存在; fi
文件存在
[root@localhost ~]#
2.2双分支结构
if [ 条件判断式 ]; then
当条件判断成立时,可以执行一条或多条命令
else
当条件判断不成立时,可以执行一条或多条命令
fi
在同一个数据的判断中,如果该数据需要进行两种不同的判断,我们就需要双分支if语句了:
eg: 判断用户输入的是否为yes
2.3多分支结构
if [ 条件判断式 ]; then
当条件判断成立时,可以执行一条或多条命令
elif [ 条件判断式二 ]; then
当条件判断成立时,可以执行一条或多条命令
else
当上面的条件判断都不成立时,可以执行一条或多条命令
fi
如果数据需要进行多种不同的判断,则可以使用多分支结构 嵌套使用。
[root@localhost ~]#vim reboot1.sh
read -p "请输入yes或no:" TEST
if [ $TEST = "yes" ]
then
echo 你输入的为$TEST!
elif [ $TEST = "no" ]
then
echo 你输入的为$TEST!
else
echo 你输入的${TEST}有错误,请重启输入yes或者no!
fi
三、case语句
格式:
case 变量名称 in
模式1)
命令序列
;;
模式2)
程序段
;;
*)
不包含第一个变量内容与第二个变量内容的其他程序执行段
默认程序段
;;
esac
注意点:
case行首必须以单词“in”,每一模式必须以单个右括号")"结束
双分号";;"表示命令序列的结束
模式字符串中,可以用方括号表示一个连续的范围,如"[0-9]";还可以使用竖杠|表示或,比如a|b
最后的)表示默认模式,其中的相当于通配符
eg: