Shell脚本编程实战技巧
一、基础语法
#!/bin/bash
# 这是注释
# 变量定义
name="World"
echo "Hello, $name!"
echo "Today is $(date +%Y-%m-%d)"
# 特殊变量
echo "脚本名: $0"
echo "参数1: $1"
echo "参数个数: $#"
echo "所有参数: $*"
二、条件判断
# 数字比较
if [ $a -eq $b ]; then
echo "a等于b"
fi
if [ $a -ne $b ]; then
echo "a不等于b"
fi
if [ $a -gt $b ]; then
echo "a大于b"
fi
# 字符串比较
if [ "$str1" = "$str2" ]; then
echo "字符串相等"
fi
if [ -z "$str" ]; then
echo "字符串为空"
fi
# 文件判断
if [ -f "/path/to/file" ]; then
echo "是普通文件"
fi
if [ -d "/path/to/dir" ]; then
echo "是目录"
fi
三、循环结构
# for循环
for i in {1..5}; do
echo "Number: $i"
done
for file in *.txt; do
echo "Processing $file"
done
# while循环
count=1
while [ $count -le 5 ]; do
echo "Count: $count"
((count++))
done
# until循环
until [ $count -gt 10 ]; do
echo "Until: $count"
((count++))
done
四、函数定义
# 定义函数
function hello() {
echo "Hello, $1!"
return 0
}
# 调用函数
hello "World"
# 带返回值的函数
function get_sum() {
local sum=$(( $1 + $2 ))
echo $sum
}
result=$(get_sum 10 20)
echo "Sum: $result"
五、实战案例
#!/bin/bash
# 自动备份脚本
BACKUP_DIR="/backup"
DATE=$(date +%Y%m%d)
SOURCE_DIR="/var/www"
# 创建备份目录
mkdir -p $BACKUP_DIR
# 备份文件
tar -czvf $BACKUP_DIR/backup_$DATE.tar.gz $SOURCE_DIR
# 删除30天前的备份
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete
echo "Backup completed: $DATE"