Shell 编程基础入门|曼巴精神打磨运维自动化基本功

发布时间:2026/10/10 10:56:46

Shell 编程基础入门|曼巴精神打磨运维自动化基本功 文章目录一、为什么要学 Shell 编程先搞懂 Shell 是啥Shell 脚本是啥为什么必须学学好的前提二、第一个 Shell 脚本脚本规范开头注释脚本的 5 种执行方式开发规范与好习惯三、Shell 变量基础知识变量是啥变量两大类1. 环境变量全局变量2. 普通变量局部变量三种赋值方式区别巨大命令结果赋值四、变量进阶知识特殊变量生产天天用位置参数变量状态变量常用内置命令echoreadshift变量子串操作特殊扩展变量五、数值计算(()) 双小括号首选letexprbc支持小数awk小数运算神器六、条件测试脚本的大脑四种写法文件判断最常用字符串判断整数比较逻辑运算[[]] 正则匹配写在最后ManWhat can I say孩子们运维干到最后拼的就是自动化。重复的活天天做累死人还容易错Shell 脚本就是解放双手的第一把神器。批量检查服务器、自动部署服务、日志分析、定时巡检啥都能干是每个 Linux 运维的立身基本功。今天把 Shell 编程从入门到上手的核心知识点全撸一遍从第一个脚本到变量、运算、条件判断全是生产常用干货打开终端跟着敲拒绝眼会手废点赞收藏反复练一、为什么要学 Shell 编程先搞懂 Shell 是啥Shell 就是个命令解释器包在操作系统内核外面你敲命令它解释给内核执行结果再返回给你。咱们登录 Linux 之后所有的操作全是 Shell 在解释执行。Linux 默认的 Shell 是 bashBourne Again ShellSolaris/BSD 默认 shAIX 默认 ksh咱们重点讲 bashShell 脚本是啥把一堆命令、逻辑控制写进一个文件里一次性顺序执行就是 Shell 脚本非交互模式运行类似 Windows 的 bat 批处理。不用一条条敲命令写好脚本跑一次全搞定批量操作、自动化全靠它。为什么必须学Linux 里几乎所有东西都是纯文本配置文件、日志文件、启动脚本、服务配置。Shell 天生就是处理文本的学好 Shell就能把重复工作全自动化大幅提升效率。合格的 Linux 运维必须能熟练写 Shell 脚本也能看懂系统自带的各种脚本。学好的前提vim 玩得溜会配置 vimrc写代码效率翻倍Linux 常用命令熟练基础打牢正则表达式 三剑客grep、sed、awk掌握熟悉常见网络服务的部署、日志、排错曼巴忠告学好 Shell 的核心就是多练、多思考、多总结。从简单判断、简单循环开始多模仿多动手别上来就搞复杂脚本变量命名要规范别拿来主义慢慢形成自己的代码风格。二、第一个 Shell 脚本脚本规范开头脚本第一行必须写幻数指定用什么解释器执行#!/bin/bash#!就是幻数标记内核根据它后面的路径找解释器。CentOS 默认 Shell 是 bash不写也能用但规范写法必须加换环境就不会出问题。注释#后面的内容全是注释解释器不执行只给人看。可以单独一行也可以跟在命令后面写注释是职业素养方便别人看也方便自己过段时间回头看尽量用英文注释避免不同环境中文乱码脚本的 5 种执行方式bash script.sh最稳妥不需要脚本有执行权限也不用写幻数生产最推荐避免忘加 x 权限的经典坑./script.sh需要先加执行权限chmod x script.sh相对路径绝对路径都行source script.sh或. script.sh在当前 Shell 进程执行不启动新进程脚本里的变量、函数能直接在当前终端用这是和其他方式最大的区别bash script.sh输入重定向执行脚本放 PATH 环境变量的目录里直接输文件名就能执行开发规范与好习惯第一行必须写#!/bin/bash开头加版本、作者、功能描述、日期脚本名统一.sh结尾存固定目录成对的符号一次性写完再填内容防止漏括号流程控制语句一次性写完结构再填内容代码缩进对齐易读性拉满字符串赋值加双引号等号两边绝对不能有空格所有符号都是英文半角别敲成中文符号三、Shell 变量基础知识变量是啥变量就是内存里存数据的盒子用一个名字代表一段内容。名字只能是字母、数字、下划线不能以数字开头。Bash 是弱类型语言默认不分类型都当字符串处理。变量两大类1. 环境变量全局变量一般全大写用export导出当前 Shell 和所有子进程都能用永久生效用户级写~/.bashrc全局级写/etc/bashrc常用环境变量HOME、PATH、USER、PWD、LANG、HISTSIZE查看env看所有环境变量set看所有变量unset 变量名删除变量2. 普通变量局部变量只在当前 Shell / 脚本里有效出了这个环境就没了。三种赋值方式区别巨大# 不加引号简单连续字符串用里面有变量会被解析 a192.168.1.2-$b # 单引号所见即所得里面啥都原样输出变量不解析 b192.168.1.2-$a # 双引号最常用里面的变量会解析后再赋值 c192.168.1.2-$a曼巴忠告想原样输出用单引号想解析变量用双引号别搞混了命令结果赋值把命令执行的结果存进变量两种写法# 推荐写法$() 括起来清晰不容易混 now$(date %F) # 反引号写法不推荐容易和单引号搞混 nowdate %F经典坑变量名后面紧跟其他字符的时候必须用大括号把变量名括起来比如${name}abc不然 Shell 会把nameabc当成变量名直接空值新手 90% 都踩过四、变量进阶知识特殊变量生产天天用位置参数变量脚本接收外部传参全靠它$0当前脚本的文件名$1~$9第 1 到第 9 个参数第 10 个及以上写${10}$#传进来的参数总数$所有参数每个都是独立字符串传参首选$*所有参数当成一整个字符串状态变量$?上一条命令的执行返回值0 成功非 0 失败最最常用判断命令成没成、条件判断全靠它$$当前 Shell 进程的 PID$!上一个后台运行进程的 PID$_上一条命令的最后一个参数常用内置命令echo输出内容常用参数-n输出不换行-e解析转义字符\n换行、\t制表符read从标准输入读取内容赋值给变量交互脚本用read -p 请输入密码 passwd # -p 提示信息 read -s -p 请输入密码 passwd # -s 不显示输入输密码用shift位置参数整体左移一位$2 变1 11# 减 1处理大量参数的时候用。变量子串操作直接操作变量内容不用调用外部命令效率极高表格语法作用${#str}返回字符串长度最快的求长度方法${str:offset}从 offset 位置开始截取到结尾${str:offset:length}从 offset 开始截取 length 个字符${str#word}从开头删除最短匹配的 word${str##word}从开头删除最长匹配的 word${str%word}从结尾删除最短匹配的 word${str%%word}从结尾删除最长匹配的 word${str/old/new}替换第一个匹配的 old 为 new${str//old/new}替换所有匹配的 old 为 new生产场景常用批量改文件名、取路径后缀、提取目录名不用 sed 不用 awk原生就搞定。特殊扩展变量专门处理变量为空的场景防止脚本报错表格语法作用${var:-default}var 为空 / 未定义返回 defaultvar 本身不变${var:default}var 为空 / 未定义设为 default 并返回var 本身也变${var:?errmsg}var 为空 / 未定义输出 errmsg 并报错退出${var:word}var 有值就返回 word没值啥也不返回曼巴忠告生产写脚本路径、参数这类变量一定要加默认值比如find ${path:-/tmp} -name *.log防止变量没定义的时候直接从根目录开始删血的教训五、数值计算Shell 做算术运算常用的就这几个工具各有适用场景。(()) 双小括号首选整数运算最高效最常用推荐优先用echo $((11)) # 输出运算结果 ((a5*2)) # 运算后赋值给a echo $((a)) # 先返回a的值再加1 echo $((a)) # 先加1再返回值支持加减乘除、取余、幂运算也支持比较、逻辑运算成立返回 1不成立返回 0。let和 (()) 功能差不多写法不同let ii8expr老工具运算符两边必须有空格乘号要转义\*还能做字符串匹配、算长度现在用得少。expr 2 3 expr 2 \* 3bc支持小数Linux 自带计算器支持小数运算echo scale2; 10/3 | bc # scale保留2位小数awk小数运算神器小数计算用 awk 很方便精度高echo 7.7 3.8 | awk {print $1-$2}六、条件测试脚本的大脑条件判断就是让脚本有逻辑四种写法各有适用场景。四种写法test 表达式最原始[ 表达式 ]最常用推荐和 test 等价[[ 表达式 ]]扩展写法支持正则匹配(( 表达式 ))纯数值比较用注意[]和[[]]里面两端必须有空格没空格直接语法错经典中的经典坑文件判断最常用运维天天和文件目录打交道这些参数记死表格参数作用-d存在且是目录为真-f存在且是普通文件为真-e只要存在就为真不管是文件还是目录-r存在且可读为真-w存在且可写为真-x存在且可执行为真-s存在且大小不为 0 为真-ntfile1 比 file2 新为真-otfile1 比 file2 旧为真示例[ -f /etc/passwd ] echo 存在 || echo 不存在字符串判断表格参数作用-z字符串为空为真-n字符串非空为真/两个字符串相等为真!两个字符串不等为真曼巴忠告字符串比较一定要把变量加双引号不然变量为空的时候直接变成[ abc ]语法直接错新手必踩坑整数比较表格[] 里写法(()) 里写法含义-eq等于-ne!不等于-gt大于-ge大于等于-lt小于-le小于等于逻辑运算表格[] 里写法[[]]/(()) 里写法含义-a逻辑与两边都真才为真-o||逻辑或一边真就为真!!逻辑非取反和||短路超好用条件 成立执行 || 不成立执行简单判断不用写 if一行搞定。[[]] 正则匹配双中括号支持~正则匹配判断字符串是否符合模式[[ $str ~ ^[0-9]$ ]] echo 是数字 || echo 不是数字写在最后ManWhat can I say变量、运算、条件判断这三块是 Shell 编程的地基。基础打牢了后面循环、函数、批量自动化脚本都是手到擒来。一定要终端亲手敲写第一个脚本、传参测试、变量子串操作、数值运算、各类条件判断每个坑都踩一遍比背十页笔记都管用。万丈高楼平地起Shell 基本功打牢了后面自动化运维、批量管理、监控告警直接快人一步。后续持续更新 Shell 进阶实战干货欢迎点赞收藏关注一起持续打怪升级Mamba out
延伸阅读

更多相关文章

2026/10/10 10:51:46

多尺度仿真实战:从分子动力学到宏观力学性能预测

很多做仿真的人都会碰到一个尴尬场景:手里握着一堆原子级的分子动力学数据,老板却问你宏观拉伸强度是多少;或者实验那边测出材料性能异常,但微观机理完全说不清。这时候就需要多尺度仿真方法出场了——它本质上是把原子尺度、介观…

2026/10/10 10:51:46

WTL 10.0与VS2019编译实战:环境配置与避坑指南

简介:WTL10.0最终版本,专为Visual Studio 2019优化,面向需要轻量级Windows界面开发的C程序员。相比MFC,WTL更精简,直接映射Win32 API,配合模板类与Unicode支持,适合构建高性能、可定制的小体积桌…

2026/10/10 10:51:46

AI落地深水区:多AI协作与Agent工程化实战解析

今天打开几个技术社区和资讯站,满屏都是和“AI”相关的话题。说实话,现在的AI日报和一年前最大的区别在于:大家讨论的不再是“模型又刷了多少分”“生成了多惊艳的图”,而是更具体的工程问题、部署成本、Agent稳定性以及AI进入真实…

2026/10/10 17:34:45

LoRA微调与知识蒸馏联合优化实战指南

1. 为什么“更省的微调”和“更小的学生”不是营销话术,而是工程落地的刚性需求LoRA 和知识蒸馏这两个词最近在大模型圈里被反复提起,但很多人一看到“微调”就下意识想到租三台A100跑一周、显存爆满、checkpoint动辄30GB——结果还没调完,预…

2026/10/10 17:34:45

从Demo到生产:Agent架构与多智能体协作实战指南

过去一年里被问得最多的问题,不是“怎么用 LangChain 写一个 Agent”,而是“写完 Demo 之后怎么办”。前后端联调跑通了,Prompt 也调得挺顺,但一放到生产环境,各种奇怪问题全冒出来:上下文错乱、工具调用超…

2026/10/10 17:34:45

Agent从Demo到生产落地:架构、多智能体与可靠性指南

这是最近被问得最多的一类问题:Agent 的 Demo 跑得风生水起,一上生产就露怯。我自己也经历过这个阶段——在内部验证会上,一个能自动查库存、写邮件、汇报结果的智能体把在场的人都看嗨了,可等它真的接到业务系统里,第…

2026/10/10 17:34:45

OpenClaw配置QQ机器人保姆级教程:WSL2+NapCat+OneBot全流程实战

很多朋友第一次接触OpenClaw,都是被那句“让你的AI自己用电脑”吸引过来的。但真到自己动手配置QQ机器人时,才发现坑远比想象中多——WSL2环境报错、Node.js版本不对、MySQL连不上、NapCat转发器配置完但消息就是发不出去……这套组合拳下来,…

2026/10/10 17:34:45

Shell 脚本入门:写好第一个脚本的必备基础

学 Linux 自动化运维,Shell 是绕不过去的第一关。这篇把「Shell 是什么、脚本怎么跑起来、变量怎么写」一次讲清,读完你能独立写出并执行第一个脚本。文中的变量基础部分与旧文《Shell 变量与环境变量》互补,重复的演示已压缩并注明去处。 本…

2026/10/10 17:29:42

LL(1)文法与四元式:IF-ELSE翻译程序的核心实现

简介:针对编译原理课程中IF-ELSE条件语句的翻译程序设计任务,这份资源提供了基于LL(1)分析法并输出四元式的完整工程实现。资源包共17个文件,压缩包仅417KB,包含Visual Studio工程文件(sln、vcproj)、C源代…

2026/10/10 7:31:36

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/9 20:15:56

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 0:04:53

从逻辑门到计算机:数字电路核心原理与全加器搭建实战

如果你拆过一台旧电脑的主板,盯着那些黑乎乎的小芯片看上一会儿,可能会冒出同一个疑问:这堆引脚密集的元件,到底是怎么“变”出那么复杂的应用的?答案并不在某个神秘的部件里,而是在所有芯片内部都在反复使…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑