Shell脚本编程实战:从入门到精通的100个经典案例(附代码解析)

一、为什么要学Shell脚本?(新手必看指南)

各位老铁们!今天咱们来聊聊这个服务器运维领域的"瑞士军刀"——Shell脚本编程(敲黑板!!!)。很多刚接触Linux的小伙伴都会有这样的困惑:图形界面操作不香吗?为什么要学这种黑乎乎的命令行脚本?

(偷偷告诉你)当你在凌晨3点被报警短信吵醒,需要同时给100台服务器打补丁的时候;当你每天要重复处理500个日志文件的时候;当你要在1分钟内完成系统健康检查的时候… 你就会明白Shell脚本到底有多香!

二、Shell脚本快速上手指南 🚀

2.1 环境准备(超简单版)

掏出你的Linux/Mac电脑(Windows同学可以用WSL),打开终端输入:

#!/bin/bash
echo "Hello, Shell World!"  # 人生第一个脚本

保存为hello.sh,然后chmod +x hello.sh给执行权限,最后./hello.sh见证奇迹!

2.2 必须掌握的5大核心语法

  1. 变量操作name="张三"(注意等号两边不能有空格!)
  2. 条件判断
if [ $age -gt 18 ]; then
    echo "成年了"
else
    echo "未成年"
fi
  1. 循环控制
for i in {1..5}
do
    echo "第$i次循环"
done
  1. 函数定义
function greet() {
    echo "你好,$1!"
}
greet "王师傅"
  1. 文件操作
# 查找修改时间在7天前的日志文件
find /var/log -name "*.log" -mtime +7

三、实战案例精选(建议收藏反复练习)💻

案例17:服务器健康检查脚本

#!/bin/bash
# 获取系统负载
load=$(uptime | awk -F 'load average:' '{print $2}')
# 检查磁盘使用率
disk_usage=$(df -h | grep '/dev/sda1' | awk '{print $5}')
# 内存使用情况
free_mem=$(free -m | awk '/Mem/{print $4}')
echo "系统负载: $load"
echo "磁盘使用率: $disk_usage"
echo "剩余内存: ${free_mem}MB"

案例42:自动备份数据库(生产环境验证版)

#!/bin/bash
backup_dir="/data/backup/$(date +%Y%m%d)"
mkdir -p $backup_dir
mysqldump -uroot -p'password' mydb > ${backup_dir}/mydb.sql
# 保留最近7天备份
find /data/backup/ -type d -mtime +7 | xargs rm -rf

案例89:日志分析神器(可视化结果)

#!/bin/bash
# 统计Nginx日志状态码
awk '{print $9}' access.log | sort | uniq -c | sort -rn
# 提取访问量TOP10的IP
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -10

四、避坑指南(血泪经验总结)⚠️

  1. 空格敏感症[ $a == $b ] 每个空格都不能少!建议用[[ ]]代替
  2. 变量引号陷阱:处理带空格的字符串必须加双引号
  3. 路径问题:脚本中用绝对路径最安全
  4. 权限管理chmod设置要合理,生产环境别用777!
  5. 调试技巧:用set -x开启调试模式,set +x关闭

五、进阶学习路线图 🎯

  1. 正则表达式grep/sed/awk三剑客必须精通
  2. 信号处理trap命令处理中断信号
  3. 并发控制&wait实现多进程
  4. 安全编程set -euo pipefail防御式编程
  5. 性能优化:避免不必要的子进程创建

(超级重要)最后送大家一句话:Shell脚本不是用来写复杂业务的,而是用来做自动化粘合剂的!当脚本超过200行时,就该考虑换Python了~

附:推荐学习资源

  • 《Linux命令行与Shell脚本编程大全》(圣经级教材)
  • explainShell.com(命令解析神器)
  • ShellCheck在线检查工具(语法纠错必备)
  • GitHub热门仓库:awesome-shell(精品脚本合集)

看完这篇文章是不是跃跃欲试了?赶紧打开终端,从写一个自动清理临时文件的脚本开始吧!遇到问题欢迎在评论区交流讨论~(记得三连哦)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值