提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
第二章:条件测试语句
- 前言
- 一、知识点
- (一)条件测试
- 1、语法
- 2、test条件测试语句
- 3、[]条件测试语句
- 4、字符串比较测试:
- 5、数值比较测试:
- (二)小结
- 二、案例脚本
- 1.(())运算命令例子
- 2.let命令使用:一个检测网站存活的脚本
- 3.expr命令使用:判断文件类型
- 4.一个安装lnmp、lamp的脚本
前言
条件测试语句:
- 条件测试
- 数值运算
- if条件判断
一、知识点
(一)条件测试
1、语法
2、test条件测试语句
语法: test 测试参数 要测试的对象 对结果进行判断执行的动作
test -e hello.txt && echo “该文件存在” || echo “”该文件不存在
3、[]条件测试语句
注意:如果是测试变量必须要加上双引号
4、字符串比较测试:
5、数值比较测试:
(二)小结
写一个只能输入1、2的脚本
二、案例脚本
1.(())运算命令例子
#! /bin/bash
# 写一个计算器脚本
# 定义函数
print_tips() {
printf "必须输入纯数字!!!"
exit 1
}
# 让用户输入第一个数字
read -p "请输入第一个数字:" firstnumber
# read "请输入第一个数字:" firstnumber
# 判断用户输入的字符是否是存数字
if [ -n "`echo $firstnumber|sed 's/[0-9]//g'`" ]
then
print_tips
fi
# 让用户输入运算符 只能加减乘除
read -p "请输入运算符:" operate
if [ "$operate" != "+" ] && [ "$operate" != "-" ] && [ "$operate" != "*" ] && [ "$operate" != "/" ]
then
echo "只能输入+、-、*、%"
exit 2
fi
# 让用户输入第二个数字
read -p "请输入第二个数字:" sendnumber
# 验证第二个字符格式
if [ -n "`echo $sendnumber|sed 's/[0-9]//g'`" ]
then
print_tips
fi
# 输出运算结果:
echo "${firstnumber}${operate}${sendnumber}的结果是:$(($firstnumber$operate$sendnumber))"
2.let命令使用:一个检测网站存活的脚本
#!/bin/bash
# 定义变量
url=$1
echo "即将对$1进行检查>>>>>>>"
failCount=0
successCount=0
timeout=5
# 定义一个检测函数
check_url() {
while true
do
# --timeout表示超时时间s --tries表示反复重试 -q表示忽略详细信息 -O表示输出地点
wget --timeout=${timeout} --tries=1 $url -q -O /dev/null
if [ $? -ne 0 ]
then
let failCount=failCount+1
else
let successCount+=1
fi
# 根据统计次数给出相应的提示
if [ $failCount -ge 2 ]
then
printf "很遗憾!该网站存在问题,请及时检查:_:"
exit 1
elif [ ${successCount} -ge 1 ]
then
echo "恭喜!${url}网站运行正常,可以访问^ - ^"
exit 0
fi
done
}
check_url
3.expr命令使用:判断文件类型
#!/bin/bash
if [ `expr $1 ":" ".*\.png"` -gt 0 ]
then
echo "该文件是png文件"
exit 0
else
echo "该文件不是png文件"
exit 2
fi
4.一个安装lnmp、lamp的脚本
#! /bin/bash
#lujing
path=/all_test/install_scripts/
#判断目录是否存在 不存在则创建
[ ! -d "$path" ] && mkdir -p $path
# 给用户输入提示信息
cat <<END
1.[install lamp]
2.[install lnmp]
3.[exit]
please input the number want:
END
# 读取用户输入的值
read num
# 判断用户是否输入的数字
#test -n "$(${num}|sed 's/[0-9]//g')" && echo 'must to be number'
expr $num + 1 &> /dev/null
## 判断上句结果
[ $? -ne 0 ] && {
echo 'must to be number!'
}
# 对输入是1、2、3的情况进行处理
[ $num = 1 ] && {
echo "start installing...lamp.."
sleep 3
test -x "$path/lamp.sh" || {
echo "the file err..."
exit 1
}
$path/lamp.sh
exit $?
}
[ $num = 2 ] && {
echo "start installing...lnmp..."
sleep 2
[ -x "$path/lnmp.sh" ] || {
echo "the flie2 err..."
exit 2
}
$path/lnmp.sh
exit $?
}
[[ $num -eq 3 ]] && {
echo "bye"
exit 3
}
# 限制用户只能输入123
[[ ! "$num" =~ [1-3] ]] && {
echo "please input 1|2|3"
exit 4
}