Shell 脚本入门指南:自动化运维必备

为什么要学Shell脚本?

Shell脚本是Linux系统的自动化工具,能让你把重复的操作写成脚本一键执行。

第一个Shell脚本

#!/bin/bash
# 这是注释

echo "Hello, World!"
echo "当前目录: $(pwd)"
echo "今天是: $(date)"

变量

# 定义变量
name="小明"
age=18
echo "名字: $name, 年龄: ${age}岁"

# 环境变量
echo "PATH: $PATH"
echo "HOME: $HOME"

# 命令行参数
# $0 脚本名
# $1, $2, ... 第1、2个参数
# $# 参数个数
# $@ 所有参数

条件判断

#!/bin/bash

if [ -f "$1" ]; then
    echo "$1 是一个文件"
elif [ -d "$1" ]; then
    echo "$1 是一个目录"
else
    echo "$1 不存在"
fi

# 数值比较
if [ $age -ge 18 ]; then
    echo "成年了"
fi

# 字符串比较
if [ "$name" = "小明" ]; then
    echo "你好小明"
fi

循环

#!/bin/bash

# for循环
for i in 1 2 3 4 5; do
    echo "第 $i 次循环"
done

# 遍历文件
for file in *.txt; do
    echo "处理文件: $file"
done

# while循环
count=0
while [ $count -lt 5 ]; do
    echo "Count: $count"
    count=$((count + 1))
done

函数

#!/bin/bash

function hello() {
    echo "你好, $1!"
    return 0
}

hello "小明"
hello "小红"

# 返回值
function add() {
    echo $(( $1 + $2 ))
}

result=$(add 3 5)
echo "结果: $result"

实用案例:备份脚本

#!/bin/bash

# 简单备份脚本
SOURCE="/var/www"
BACKUP_DIR="/backup"
DATE=$(date +%Y%m%d%H%M)

mkdir -p $BACKUP_DIR

# 打包
tar -czf "$BACKUP_DIR/www-$DATE.tar.gz" $SOURCE

# 清理7天前的备份
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete

echo "备份完成: $BACKUP_DIR/www-$DATE.tar.gz"

总结

Shell脚本能力是Linux运维的基石。从简单的备份到复杂的部署流程,Shell都能搞定。