技术文章 门禁与楼宇对讲

Shell脚本编程实战技巧

管理员 2026-05-29 01:42 13 次阅读

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"