Shell脚本编程实战宝典:100个案例带你从小白到高手(建议收藏)

一、为什么要学Shell脚本?(真香警告)

各位打工人注意了!!!当你还在手动处理日志文件时,别人已经用5行脚本搞定周报统计;当你守着服务器敲命令时,大神早就用定时脚本自动巡检系统了(血泪教训)!Shell脚本作为Linux系统的"瑞士军刀",绝对是运维、开发、测试人员必会的生存技能!

最近公司新来的实习生因为不会写脚本,硬是花2小时手动处理了本该5分钟完成的日志分析…(领导看了直摇头)

二、新手必会的20个基础案例

1. 文件管理三剑客

#!/bin/bash
# 批量重命名(实战高频!!!)
for file in *.txt; do
    mv "$file" "backup_${file}"
done

# 自动清理7天前的日志(系统管理员必会)
find /var/log -type f -mtime +7 -exec rm {} \;

2. 系统监控三板斧

# 内存报警脚本(救过我的年终奖)
if [ $(free | awk '/Mem/{printf("%d"), $3/$2*100}') -gt 90 ]; then
    echo "内存爆了!" | mail -s "紧急警报" admin@example.com
fi

3. 文本处理骚操作

# 提取nginx日志中的TOP10 IP(分析必备)
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10

(偷偷说:把#!/bin/bash改成#!/usr/bin/env bash会更专业哦~)

三、进阶玩家的50个实战技巧

1. 防呆设计指南

set -euo pipefail  # 让你的脚本更健壮(超级重要!!!)
trap "echo 脚本被中断!退出码$?" EXIT  # 异常捕获

2. 交互式脚本开发

read -p "请输入你的幸运数字:" num
case $num in
    [0-9]) echo "基本操作" ;;
    *) echo "搞事情?" >&2 ;;
esac

3. 跨平台兼容秘籍

if [[ "$OSTYPE" == "darwin"* ]]; then
    alias date=gdate  # MacOS兼容大法
fi

(实测经验:用[[ ]]代替[ ]能避免很多坑!)

四、高手必备的30个企业级案例

1. 自动化部署流水线

#!/usr/bin/env bash
# 安全传输+校验+备份一条龙
scp -i key.pem app.tar user@server:/opt/
ssh -i key.pem user@server "tar xf /opt/app.tar && 
    md5sum /opt/app.tar | tee checksum.txt &&
    mv /old_app /backup/old_app_$(date +%s)"

2. 智能日志分析系统

#!/bin/bash
# 实时监控+自动分析
tail -f /var/log/app.log | 
while read line; do
    if grep -q "ERROR" <<< "$line"; then
        echo "$(date) 发现异常:$line" >> error_report.log
        # 自动触发钉钉报警...
    fi
done

3. 分布式任务调度框架

# 主节点
cat task.list | xargs -P 4 -I {} ssh node{} 'bash task.sh'

# 配合ansible食用更香~

五、避坑指南(血泪总结)

  1. 变量引用的天坑
# 错误示范:
if [ $var = "test" ]; then...  # 当var为空时会报错!
# 正确姿势:
if [ "${var}" = "test" ]; then...
  1. 空格敏感症
[ $a == $b ]    # 错误!
[ "$a" == "$b" ] # 正确
  1. 路径中的特殊字符
mkdir "奇怪的名字&*"  # 一定要加引号!!!

(记不住?用shellcheck工具自动检查语法!)

六、学习路线图(亲测有效)

  1. 新手村任务

    • 《Linux命令行与Shell脚本编程大全》
    • 每天写10个实用小脚本
  2. 进阶副本

    • 通读GNU Coreutils文档
    • 研究Ansible源码中的shell模块
  3. 终极挑战

    • 用纯Shell实现简易Docker
    • 参加Google Shell编程大赛

最后说句掏心窝的:别光收藏不练习啊各位!我电脑里存了200多个脚本模板,都是这些年踩坑总结的,需要的可以留言讨论(当然得先关注啦~)!

彩蛋:在脚本开头加一行# vim: set ft=sh ts=4 sw=4 et: 会让你的代码更专业(装X必备)!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值