Shell脚本编程实战:从入门到精通(100个经典案例剖析)

🔥 为什么你的Shell脚本总是跑不起来?(新手必看血泪史)

刚接触Shell脚本那会儿,我连最简单的#!/bin/bash都能写错成#/bin/bash(少了个感叹号啊朋友们!!!),结果脚本死活不执行。后来才发现,原来这行被称为"shebang"的声明语句,是脚本的命门所在(超级重要)!

🚀 新手必刷10大基础案例

  1. 文件批量重命名(拯救强迫症患者)
# 把所有的.jpg改成.png(注意测试后再操作!)
for file in *.jpg; do
    mv "$file" "${file%.jpg}.png"
done

(敲黑板)${变量%模式}这个语法是删除变量末尾匹配模式的部分,简直是字符串处理的神器!

  1. 自动清理7天前的日志(运维必备技能)
find /var/log -name "*.log" -mtime +7 -exec rm {} \;

这里有个大坑:-exec后面的分号必须转义!!!我第一次写的时候漏了反斜杠,结果把整个目录都删了…(别问我是怎么知道的)


💡 中阶玩家晋级秘籍(20个实战技巧)

案例31:端口占用自动检测(网络排查神器)

#!/bin/bash
check_port() {
    netstat -tuln | grep ":$1 " >/dev/null
    return $?
}

if check_port 8080; then
    echo "端口8080已被占用!(赶紧kill进程吧)"
else
    echo "端口畅通无阻~"
fi

这个脚本教会我们:

  • 函数返回值才是王道
  • >/dev/null让输出静默
  • 退出状态码的巧妙运用

案例45:自动打包备份(防止删库跑路)

backup_dir="/data/backup/$(date +%Y%m%d)"
mkdir -p $backup_dir
tar -czf "${backup_dir}/www_$(date +%H%M).tar.gz" /var/www 2>> backup_error.log

(血泪经验)一定要加2>>来捕获错误输出,否则打包失败你都不知道怎么回事!


🛠️ 高手都在用的黑科技(10个高级操作)

案例89:SSH自动登录集群(运维偷懒神器)

#!/bin/bash
pass="YourPasswordHere"  # 当然实际要用ssh-key更安全!

for ip in 192.168.1.{100..120}
do
    sshpass -p "$pass" ssh -o StrictHostKeyChecking=no user@$ip <<'EOF'
    hostname
    free -h
    exit
EOF
done

(危险操作警告)虽然方便,但明文存储密码是大忌!建议改用ssh密钥认证,这里只是演示用法~

案例95:自动生成随机密码(安全工程师必备)

gen_pass() {
    tr -dc 'A-Za-z0-9!@#$%^&*()' < /dev/urandom | head -c 16
    echo
}

这个神脚本用了:

  • /dev/urandom真随机数生成器
  • tr命令过滤字符
  • head控制长度
    (实测比在线生成器快10倍不止!)

🚨 避坑指南(来自踩过所有雷的过来人)

  1. 变量引用的坑:忘记加引号处理带空格的路径,就像rm -rf $dir/*遇上dir="hello world",直接炸裂!
  2. 权限陷阱:明明写了可执行权限chmod +x,却忘了给脚本里的文件操作权限
  3. 编码问题:在Windows编辑的脚本放到Linux跑,换行符不对报错^M,记得用dos2unix转换
  4. 路径依赖:绝对路径和相对路径混用,导致换个目录就报错(建议都用绝对路径!)

🌟 终极建议(价值十万的经验之谈)

看到这里的都是真爱!最后送你三个锦囊:

  1. 一定要加set -euo pipefail,让脚本遇错就停(保命符啊!)
  2. 多用shellcheck工具做静态检查(比你自己找错快100倍)
  3. 复杂的文本处理请直接上awk/sed,别死磕bash语法(省下时间喝咖啡不香吗?)

(文末彩蛋)需要完整100案例代码包的,评论区留言"我要上车"!不过说真的,最好的学习方式是把这些案例自己重写一遍,调通的过程比看100遍都有用!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值