Shell脚本编程100例实战:从入门到精通(保姆级教程)

一、Shell脚本基础速成(含防坑指南)

1.1 新手必知的脚本文件规范

  • 文件必须以#!/bin/bash开头(重要!否则系统不知道用啥解释器)
  • 文件扩展名推荐用.sh(不是必须,但方便识别)
  • 执行权限必须给:chmod +x your_script.sh

(血泪教训:新手90%的错误都是没给执行权限!!!)

1.2 变量操作黑科技

name="老王"          # 等号两边不能有空格!
echo ${name}        # 推荐带花括号的写法
readonly PI=3.14    # 声明常量
unset name          # 删除变量

(注意:变量默认都是字符串类型,做数学运算要特殊处理)

1.3 流程控制骚操作

# if语句的正确姿势
if [ $a -gt $b ]; then
    echo "a大于b"
elif [ $a -eq $b ]; then
    echo "a等于b"
else
    echo "a小于b"
fi

# while循环的正确打开方式
counter=0
while [ $counter -lt 5 ]
do
    echo "当前计数:$counter"
    ((counter++))
done

(易错点:方括号两边必须有空格!)

二、实战案例精选(可直接抄作业)

2.1 文件批量处理神器

#!/bin/bash
# 批量重命名jpg文件(添加日期前缀)
for file in *.jpg
do
    mv "$file" "$(date +%Y%m%d)_${file}"
done

(适用场景:整理手机照片/工作文档)

2.2 系统监控小助手

#!/bin/bash
# 监控CPU使用率超过80%时报警
while true
do
    cpu_usage=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')
    if (( $(echo "$cpu_usage > 80" | bc -l) )); then
        echo "$(date) CPU使用率过高:${cpu_usage}%" >> /var/log/system_monitor.log
        # 这里可以添加邮件报警功能
    fi
    sleep 60
done

(生产环境实测有效,记得配置日志轮转)

2.3 自动化部署大招

#!/bin/bash
# 自动部署Java Web项目
TOMCAT_HOME="/opt/tomcat"
WAR_FILE="/tmp/myapp.war"

# 停止Tomcat
$TOMCAT_HOME/bin/shutdown.sh

# 等待进程结束
while ps -ef | grep tomcat | grep -v grep > /dev/null
do
    sleep 1
done

# 清理旧部署
rm -rf $TOMCAT_HOME/webapps/myapp*
cp $WAR_FILE $TOMCAT_HOME/webapps/

# 启动Tomcat
$TOMCAT_HOME/bin/startup.sh

(适合中小型项目的快速迭代)

三、高级技巧大揭秘

3.1 调试技巧(救命必备)

# 在脚本开头添加这些选项
set -e   # 遇到错误立即退出
set -u   # 使用未定义变量时报错
set -x   # 打印执行的命令(调试神器)

(组合使用效果更佳,生产环境记得关闭-x)

3.2 参数处理黑魔法

#!/bin/bash
# 处理命令行参数的高级姿势
while [[ "$#" -gt 0 ]]; do
    case $1 in
        -f|--file) file="$2"; shift ;;
        -v|--verbose) verbose=1 ;;
        *) echo "未知参数: $1"; exit 1 ;;
    esac
    shift
done

(支持长短参数,比getopts更灵活)

3.3 跨平台兼容秘籍

#!/bin/bash
# 检测系统类型
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
    # Linux系统命令
elif [[ "$OSTYPE" == "darwin"* ]]; then
    # MacOS系统命令
else
    echo "不支持的操作系统"
    exit 1
fi

(让你的脚本在Linux和Mac上都能跑)

四、常见坑点大全(血泪经验总结)

4.1 路径问题

  • 总是使用绝对路径(避免脚本在不同目录执行出错)
  • 特殊字符要用引号包裹:rm "$filename"

4.2 权限问题

  • sudo的正确用法:echo "password" | sudo -S command
  • 避免直接使用root运行脚本

4.3 编码问题

  • 在脚本开头添加:export LANG=en_US.UTF-8
  • 处理中文文件名时特别小心

五、性能优化技巧

5.1 减少子进程调用

# 错误示范(产生多个子进程)
for i in $(seq 1 100); do
    echo $i
done

# 正确姿势(避免多次调用seq)
for ((i=1; i<=100; i++)); do
    echo $i
done

5.2 使用Here Document

# 批量创建用户
while read user pass
do
    useradd "$user"
    echo "$pass" | passwd --stdin "$user"
done << EOF
user1 123456
user2 654321
EOF

六、实战项目推荐

6.1 自动化服务器健康检查

  • 检查磁盘使用率
  • 检查内存剩余
  • 检查重要进程状态
  • 生成HTML报告

6.2 日志分析工具

  • 分析Nginx访问日志
  • 统计TOP 10访问IP
  • 检测异常请求
  • 自动发送日报邮件

6.3 个人工作流优化

  • 自动备份开发环境配置
  • 一键启动开发环境
  • 自动同步工作文件到云存储
  • 会议提醒脚本

七、学习资源推荐

7.1 官方文档

  • Bash参考手册:info bash
  • GNU Coreutils文档

7.2 经典书籍

  • 《Linux命令行与shell脚本编程大全》
  • 《Shell脚本学习指南》

7.3 在线练习

写在最后

Shell脚本就像瑞士军刀,看起来简单但能解决各种实际问题。记住:

  1. 多写多练(光看教程是学不会的)
  2. 善用调试技巧(set -x是你的好朋友)
  3. 注意安全(特别是处理rm命令时)
  4. 保持代码可读性(你三个月后还要看得懂)

(最后的忠告:永远不要在生产环境直接运行未经测试的脚本!!!)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值