AI智能
改变未来

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

小破站学习笔记

基本语法结构

if结构

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

if…else结构

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

if…elif…else结构

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

多层嵌套

if [ 判断条件1 ];then条件为真 执行语句command1if [ 判断条件2 ];then条件为真 执行语句command2fielseif [ 判断条件3 ];then条件为真 执行语句command3elif  [ 判断条件4 ];then条件为真 执行语句command4else条件为假 执行语句command5fi

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

应用案例

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

#!/bin/bashping -c 3 192.168.0.1 > /dev/null && ping -c 3 192.168.0.2 > /dev/nullif [ $? -eq 0 ];thenecho \"ok\"elseecho \"not ok\"fi#通过ping的$?值来判断是否正常

判断httpd是否存在进程

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

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

#!/bin/bashwget /zss/ Shell/www.baidu.com &> /dev/nullif [ $? -eq 0 ];thenecho \"ok\"rm /zss/index*elseecho \"not ok\"fi或test $? -eq 0 && echo \"ok\" || echo \"not ok\"#Linux 访问web 返回状态码 200#可以通过wget 下载 判断$?#curl#elinks -dump

判断用户是否存在

#!/bin/bashread -p \"请输入要判断的用户名:\"usernameid $username &> /dev/nullif [ $? -eq 0 ];thenecho \"ok\"elseecho \"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...结构层层嵌套
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 6.Shell之流程控制语句加案例加总结