6.Shell之流程控制语句加案例加总结

小破站学习笔记

基本语法结构

if结构

if [ 判断条件 ];then
	条件为真 执行语句
	command
fi
[ 判断条件 ] && command

if…else结构

if [ 判断条件 ];then
	条件为真 执行语句
	command
	else
	条件为假 执行语句
	command2
fi
[ 判断条件 ] && command || command2

if…elif…else结构

if [ 判断条件1 ];then
		条件为真 执行语句
		command1
	elif  [ 判断条件2 ];then
		条件为真 执行语句
		command2
	else
		条件为假 执行语句
		command3
fi
##先判断第一个条件是否满足,满足执行后面命令结束,如果不满足,则继续判断第二个条件是否满足,同理,如果都不满足,则最后执行else的语句
##可以有多个elif

多层嵌套

if [ 判断条件1 ];then
		条件为真 执行语句
		command1
		if [ 判断条件2 ];then
			条件为真 执行语句
			command2
		fi
		else
		if [ 判断条件3 ];then
			条件为真 执行语句
			command3
			elif  [ 判断条件4 ];then
				条件为真 执行语句
				command4
		else
			条件为假 执行语句
			command5
fi	

就是对上面的语句进行嵌套

应用案例

判断2台主句是否ping打的通

#!/bin/bash
ping -c 3 192.168.0.1 > /dev/null && ping -c 3 192.168.0.2 > /dev/null 
if [ $? -eq 0 ];then 
	echo "ok"
else
	echo "not ok"
fi
#通过ping的$?值来判断是否正常

判断httpd是否存在进程

#!/bin/bash
#ps -ef | greo httpd | grep -v 'grep'
#$?
pgrep httpd > /dev/null
#查找进程的id   pgrep
#$?
if [ $? -eq 0 ];then 
	echo "ok"
else
	echo "not ok"
fi
#通过pgrep的$?值来判断是否存在
或者
test $? -eq 0 && echo "ok" || echo "not ok"

判断门户网站是否正常访问

#!/bin/bash
wget /zss/ http://www.baidu.com &> /dev/null
if [ $? -eq 0 ];then 
	echo "ok"
	rm /zss/index*
else
	echo "not ok"
fitest $? -eq 0 && echo "ok" || echo "not ok"
#Linux 访问web 返回状态码 200
#可以通过wget 下载 判断$?
#curl 
#elinks -dump

判断用户是否存在

#!/bin/bash
read -p "请输入要判断的用户名:"username
id $username &> /dev/null
if [ $? -eq 0 ];then 
	echo "ok"
else
	echo "not ok"
fi
#判断用户是否存在
#id user
#grep -w admin /etc/passwd
#精确匹配
#根据$?
grep -w admin /etc/passwd

#精确匹配admin

总结

变量定义

基本定义

变量名=变量值

交互式定义

read -p "提示信息"变量名

定义有类型的变量

declare -i/x 变量名=变量值

条件判断
语法结构

test 表达式
[ 表达式 ]
[[ 表达式 ]]

判断什么

整数判断
-eq 相等
-ne 不等
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于

文件类型

-e 	判断文件是否存在(任何类型文件)
-f 	判断文件是否存在并且是一个普通文件
-d 	判断文件是否存在并且是一个目录
-L 	判断文件是否存在并且是一个软链接文件
-b 	判断文件是否存在并且是一个块设备文件
-S 	判断文件是否存在并且是一个套接字文件
-c 	判断文件是否存在并且是一个字符设备文件
-p 	判断文件是否存在并且是一个命名管道文件
-s 	判断文件是否存在并且是一个非空文件(有内容)

字符串

-z 判断是否为空字符串,字符串长度为0则成立
-n 判断是否为非空字符串,字符串长度不为0则成立
string1 = string2 判断字符串是否相等
string1 != string2 判断字符串是否不相等

文件新旧(修改时间)

文件权限

流程控制语句

if 结构
if...else结构
if...elif...else...结构
层层嵌套

版权声明:本文为weixin_43862755原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。