Shell脚本编程100例:从入门到实战的保姆级教程

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

各位老铁们(抱拳),今天咱们来聊聊这个看似老古董实则真香的技能——Shell脚本编程!你可能要问:现在都是Python/Go的天下了,学这玩意有啥用?

给你三个无法拒绝的理由:

  1. 服务器必备技能:99%的Linux服务器都预装了Bash(别杠,杠就是你对)
  2. 效率神器:30行脚本能搞定半天的手工操作(亲测有效!)
  3. 系统管理根基:看不懂脚本?怎么排查服务启动失败?

(偷偷告诉你)去年我用脚本自动处理日志,硬是把团队的工作效率提升了300%!!!老板看我的眼神都变慈祥了~

二、新手必看的10个入门案例

1. 文件批量重命名(新手村任务)

#!/bin/bash
# 给所有.txt文件加上日期后缀
for file in *.txt
do
    mv "$file" "${file%.txt}_$(date +%Y%m%d).txt"
done

(敲黑板)${file%.txt}这个参数扩展语法记下来!后面要考!!

2. 服务监控脚本(实用度MAX)

#!/bin/bash
if ! systemctl is-active --quiet nginx; then
    echo "警告!Nginx服务挂了!" | mail -s "服务异常" admin@example.com
    systemctl restart nginx
fi

配上crontab定时任务,直接变身运维小能手~

3. 自动备份脚本(打工人必备)

#!/bin/bash
backup_dir="/backup/$(date +%Y%m%d)"
mkdir -p $backup_dir
tar -czf "${backup_dir}/www_backup.tar.gz" /var/www/html
find /backup -type d -mtime +7 | xargs rm -rf 

这个find命令的用法绝了!自动删除7天前的备份,磁盘空间再也不爆炸!

(未完,后面还有7个案例…)

三、中级玩家进阶的30个实战技巧

1. 参数处理黑魔法

while [[ "$#" -gt 0 ]]; do
    case $1 in
        -u|--user) user="$2"; shift ;;
        -p|--port) port="$2"; shift ;;
        *) echo "未知参数: $1"; exit 1 ;;
    esac
    shift
done

看到这个case语句没?命令行参数处理瞬间高大上!

2. 防手抖确认机制

read -p "确定要删除所有日志吗?(y/n)" -n 1 -r
if [[ $REPLY =~ ^[Yy]$ ]]; then
    rm -rf /var/log/app/*.log
fi

加上这个,再也不怕误删文件被同事追杀!

3. 彩色输出装X技巧

RED='\033[0;31m'
NC='\033[0m' # No Color
echo -e "${RED}错误:文件不存在!${NC}"

终端瞬间变赛博朋克!运维日志也能玩出花~

(此处省略27个劲爆案例…)

四、高手专属的20个骚操作

1. 网络诊断一条龙

#!/bin/bash
ping -c1 google.com || \
curl -I https://google.com || \
traceroute google.com || \
echo "网络已断,告辞!"

这个||链式操作我给满分!层层递进的排查逻辑绝了!

2. 进程守护脚本

#!/bin/bash
until /usr/local/bin/my_service; do
    echo "服务崩溃于 $(date)" >> /var/log/crash.log
    sleep 10
done

这个until循环比while更合适!服务崩溃自动重启,稳如老狗~

3. 自动化压测神器

#!/bin/bash
for i in {1..100}
do
    ab -n 1000 -c 100 http://localhost/ >> results.log &
done
wait
echo "测试完成!开始分析..."

配合后台执行和wait命令,轻松实现并发压测!

(更多骚操作等你来解锁…)

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

  1. 空格是魔鬼if [ $a == $b ]会报错,正确是if [ "$a" == "$b" ]
  2. 路径含空格:永远用双引号包裹变量!rm -rf "$file"
  3. 权限陷阱:脚本开头不加#!/bin/bash?小心不同Shell解释差异!
  4. 中文编码:在脚本开头加export LANG=en_US.UTF-8保平安
  5. 超时控制:重要操作务必加timeout 30s your_command

(亲身经历)曾经有个脚本因为没处理空格,把整个/home目录删了…说多都是泪啊!!!

六、资源推荐(私藏干货)

  1. 在线练习场:https://www.shellcheck.net/(实时语法检查神器)
  2. 圣经级教材:《Linux命令行与Shell脚本编程大全》
  3. 进阶宝典:Bash官方文档(man bash看一天)
  4. GitHub宝藏:awesome-shell仓库(各种神仙脚本合集)

最后送大家一句话:脚本不是写出来的,是调试出来的!遇到报错别慌,set -x打开调试模式,逐行排查准没错~

(下课!)快去终端里试试今天学的技巧吧!记得做好备份再操作哦~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值