为什么要学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都能搞定。