【shell编程】第二章:条件测试语句

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

条件测试语句:
- 条件测试
- 数值运算
- 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
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LuckyCola2023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值