尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Shell脚本零基础通关教程|条件语句+函数+全类型循环(企业实战+面试真题)

Shell脚本零基础通关教程|条件语句+函数+全类型循环(企业实战+面试真题) Shell脚本零基础通关教程条件语句函数全类型循环企业实战面试真题博客简介Shell脚本是Linux运维、自动化部署、面试的核心必考技能很多新手学不懂Shell核心是没有系统掌握条件判断、函数、各类循环语法。本文整合全套Shell核心语法包含if/case条件、shell函数、while/until/for/select四大循环搭配超多可直接运行案例、企业生产实战、面试真题零基础一键吃透✅适用人群Linux新手、运维工程师、后端开发、校招面试、自动化学习✅核心知识点if多分支判断、case匹配语句、Shell函数、while/until循环、for/select菜单循环、企业自动化实战✅全文特点无废话干货、语法图解、零基础易懂、代码可直接复制运行一、Shell脚本整体知识框架Shell脚本核心语法分为条件语句、函数、循环语句三大模块各司其职条件语句if通用多判断、case固定值匹配服务脚本专用函数代码复用、模块化开发精简脚本、方便维护循环语句while(守护进程)、until(条件终止)、for(有限次数遍历)、select(交互式菜单)二、if条件语句最常用条件判断if语句是Shell中使用频率最高的条件语句适用于所有场景的逻辑判断支持单分支、双分支、多分支嵌套语法灵活、通用性极强。2.1 五大条件表达式语法if的判断条件支持5种写法日常任选其一即可推荐[]、(())极简写法# 1.test表达式iftest表达式;then指令;fi# 2.[] 字符串/普通判断最常用if[条件];then指令;fi# 3.[[]] 高级判断支持正则、逻辑运算if[[条件]];then指令;fi# 4.(()) 算术判断纯数字比较专用if((算术表达式));then指令;fi# 5.命令直接作为条件if命令;then指令;fi2.2 三大分支语法结构1单分支满足条件执行不满足跳过if条件表达式;then指令fi实战场景文件夹不存在则创建if[!-d/tmp/test];thenmkdir/tmp/testfi2双分支二选一执行if条件表达式;then指令集1# 条件成立执行else指令集2# 条件不成立执行fi3多分支多条件匹配if条件1;then指令1elif条件2;then指令2elif条件3;then指令3else默认指令fi2.3 企业实战案例sshd服务管控脚本通过传参实现服务启动、停止、重启、状态查询工作高频复用脚本#!/bin/bashif[$1start];thensystemctl start sshdelif[$1stop];thensystemctl stop sshdelif[$1status];thensystemctl status sshdelif[$1restart];thensystemctl restart sshdelseechoUsage:$0start|stop|status|restart fi三、case条件语句固定值匹配专用case语句是多分支if的精简版专门用于固定字符串/数字匹配语法工整、可读性强常用于系统服务启动脚本是企业服务脚本标配语法。3.1 核心语法case变量值in值1)指令1;;值2)指令2;;*)默认指令# 匹配失败执行;;esac核心特点匹配成功执行对应指令;;结束当前分支*)兜底匹配等价于else。3.2 经典实战案例1数字选择判断#!/bin/bashread-p请输入1-3的数字 numcase$numin1)echo您输入的数字是$num;;2)echo您输入的数字是$num;;3)echo您输入的数字是$num;;*)echo请输入1-3之间的有效数字;;esac2企业级sshd服务脚本最简版#!/bin/bashcase$1instart|stop|restart|reload|status)systemctl$1sshd;;*)echoUsage:$0start|stop|restart|reload|status;;esac3终端彩色输出脚本#!/bin/bashcase$1inPASS)echo-e\033[1;32mPASS\033[0;39m;;FAIL)echo-e\033[1;31mFAIL\033[0;39m;;DONE)echo-e\033[1;35mDONE\033[0;39m;;*)echoUsage:$0PASS|FAIL|DONE;;esac3.3 if与case使用场景区别if通用性强支持数值比较、范围判断、复杂逻辑适用所有场景case仅适配固定离散值start/stop/数字代码更规范专属服务脚本四、Shell函数代码复用模块化函数的核心作用封装重复代码、实现模块化、精简脚本、便于维护一次定义、多次调用是高级Shell脚本必备语法。4.1 三种函数语法# 标准写法function函数名(){指令returnn}# 简化写法1省略括号function函数名{指令returnn}# 简化写法2省略function函数名 {指令returnn}4.2 函数核心规则必记函数必须先定义、后调用否则报 command not found调用函数直接写函数名无需加括号return退出函数exit退出整个脚本local定义函数局部变量仅函数内部生效执行优先级系统别名 函数 系统命令 可执行文件4.3 基础实战案例#!/bin/bash# 定义函数functionhello(){echoHello World !}# 调用函数hello五、while与until循环无限/条件循环while和until属于条件循环主打无限循环、守护进程、定时监测是运维后台常驻脚本的核心语法。5.1 核心区别while当型循环条件为真持续循环条件为假退出循环可能一次不执行until直到型循环条件为假持续循环条件为真退出循环5.2 标准语法# while语法while[条件]do循环体done# until语法until[条件]do循环体done5.3 基础案例降序打印5-1# while实现#!/bin/bashi5while((i0))doecho$i((i--))done# until实现#!/bin/bashi5until((i0))doecho$i((i--))done5.4 企业生产实战1每2秒监控系统负载守护进程#!/bin/bash# 无限循环打印系统负载后台运行常驻监控whiletruedouptime/tmp/loadaverage.logsleep2done25秒监测sshd服务异常自动重启#!/bin/bashwhiletruedosystemctl is-active sshd.service/dev/nullif[$?-ne0];thensystemctl restart sshd.service/dev/nullfisleep5done5.5 脚本后台运行必备命令脚本名后台运行脚本nohup 脚本名后台永久运行关闭终端不中断ctrlz暂停任务、bg放入后台、fg切回前台jobs查看后台任务、kill %任务号关闭后台脚本六、for与select循环遍历/菜单循环for循环主打有限次数遍历是日常脚本最常用循环select主打交互式菜单选择用于自定义交互脚本。6.1 for循环两种语法1变量取值型遍历列表for变量名in取值列表do指令done支持{1..5}、$(seq 1 5)取值适合批量遍历操作2C语言型规范次数循环for((i1;i5;i))do指令done6.2 for循环经典案例1升降序打印数字# 升序 1-5foriin{1..5};doecho$i;done# 降序 5-1foriin{5..1};doecho$i;done2九九乘法表面试必考#!/bin/bashfornum1in{1..9}dofor((num21;num2num1;num2))doecho-en$num2*$num1$[ num2 * num1 ]\tdoneechodone3企业批量运维脚本# 批量设置服务开机自启#!/bin/bashforserviceincrond atd chronyddosystemctlenable$servicedone# 批量扫描局域网在线主机并发优化#!/bin/shforiinseq1254do{ping-c210.1.8.$i/dev/nullif[$?-eq0];thenecho10.1.8.$iis onlinenode_online.txtelseecho10.1.8.$iis offlinenode_offline.txtfi}donewait6.3 select交互式菜单循环select是无限交互式菜单循环用户输入序号选择功能无主动退出逻辑需配合exit终止。核心语法select变量名in菜单列表do指令done实战自定义课程选择菜单#!/bin/bashPS3请选择你的课程# 自定义提示符selectcourseinlinux mysql pythonexitdoecho你选择了第$REPLY个课程case$courseinlinux)echo选择课程Linux运维;;mysql)echo选择课程MySQL数据库;;python)echo选择课程Python开发;;exit)exit;;esacechodone核心变量PS3自定义提示符、REPLY获取用户输入序号七、Shell全语法场景终极总结语法模块核心适用场景if条件语句通用所有逻辑判断、范围比较、多条件分支case语句固定值匹配、系统服务启停脚本、代码规范化Shell函数重复代码封装、脚本模块化、精简维护while循环守护进程、后台常驻监测、无限循环任务until循环条件终止型循环场景与while互补for循环有限次数遍历、批量操作、文件处理、批量运维select循环交互式菜单制作、用户选择型脚本八、新手高频避坑指南if/case/循环语句必须成对结束fi/esac/done缺一直接报错函数必须先定义后调用否则识别为未知命令while无限循环必须加sleep避免占用100%CPU资源select无自动退出必须搭配exit实现终止批量扫描脚本添加实现并发大幅提升执行效率 点赞收藏全网最全Shell零基础通关手册覆盖入门实战面试持续更新运维自动化案例
返回列表