image.png

简单实用的Shell脚本示例及解释

1. 欢迎脚本

#!/bin/bash
# 简单的欢迎脚本

echo "请输入你的名字:"
read name
echo "你好, $name! 欢迎使用Shell脚本!"

命令解释:

2. 计算器脚本

#!/bin/bash
# 简单的加法计算器

echo "请输入第一个数字:"
read num1
echo "请输入第二个数字:"
read num2

sum=$((num1 + num2))
echo "两数之和是: $sum"

命令解释:

3. 文件检查脚本

#!/bin/bash
# 检查文件是否存在

echo "请输入要检查的文件路径:"
read filepath

if [ -f "$filepath" ]; then
    echo "文件 $filepath 存在!"
else
    echo "文件 $filepath 不存在!"
fi

命令解释:

4. 当前目录文件列表

#!/bin/bash
# 显示当前目录下的文件

echo "当前目录下的文件和文件夹:"
ls

命令解释:

5. 系统时间显示

#!/bin/bash
# 显示当前日期和时间

current_date=$(date +"%Y-%m-%d")
current_time=$(date +"%H:%M:%S")

echo "今天是: $current_date"
echo "现在时间是: $current_time"

命令解释:

6. 简单的循环示例

#!/bin/bash
# 打印数字1到5

for i in 1 2 3 4 5
do
    echo "数字: $i"
done

命令解释:

如何使用这些脚本

  1. 将代码保存为.sh文件,例如welcome.sh
  2. 给脚本执行权限:
    chmod +x welcome.sh
  3. 运行脚本:
    ./welcome.sh

shell脚本进阶

1. 系统信息检查脚本

#!/bin/bash
# 这是一个显示系统信息的脚本

echo "===== 系统信息 ====="
echo "当前用户: $(whoami)"
echo "主机名: $(hostname)"
echo "===== 系统时间 ====="
date
echo "===== 系统运行时间 ====="
uptime
echo "===== 磁盘使用情况 ====="
df -h
echo "===== 内存使用情况 ====="
free -m

命令解释:

2. 文件备份脚本

#!/bin/bash
# 文件备份脚本

backup_dir="/backup"
source_dir="/home/user/documents"
timestamp=$(date +%Y%m%d_%H%M%S)
backup_file="backup_$timestamp.tar.gz"

if [ ! -d "$backup_dir" ]; then
    mkdir -p "$backup_dir"
fi

tar -czf "$backup_dir/$backup_file" "$source_dir"

if [ $? -eq 0 ]; then
    echo "备份成功完成: $backup_file"
else
    echo "备份失败!" >&2
    exit 1
fi

命令解释:

3. 日志文件分析脚本

#!/bin/bash
# 分析日志文件中的错误

log_file="/var/log/syslog"
error_keywords=("error" "failed" "warning")
output_file="error_report.txt"

if [ ! -f "$log_file" ]; then
    echo "错误: 日志文件 $log_file 不存在!" >&2
    exit 1
fi

> "$output_file"  # 清空输出文件

for keyword in "${error_keywords[@]}"; do
    echo "===== $keyword =====" >> "$output_file"
    grep -i "$keyword" "$log_file" | tail -n 10 >> "$output_file"
    echo "" >> "$output_file"
done

echo "错误报告已生成: $output_file"

命令解释:

4. 用户账户管理脚本

#!/bin/bash
# 批量添加用户

user_list=("user1" "user2" "user3")
default_password="ChangeMe123"

if [ $(id -u) -ne 0 ]; then
    echo "该脚本需要root权限!" >&2
    exit 1
fi

for user in "${user_list[@]}"; do
    if id "$user" &>/dev/null; then
        echo "用户 $user 已存在,跳过..."
    else
        useradd -m -s /bin/bash "$user"
        echo "$user:$default_password" | chpasswd
        passwd -e "$user"  # 强制用户首次登录修改密码
        echo "已创建用户: $user"
    fi
done

命令解释:

5.系统监控脚本

#!/bin/bash
# 获取系统信息
cpu=$(top -bn1 | grep load | awk '{printf "%.2f", $(NF-2)}')
mem=$(free -m | awk '/Mem/{print $3"MB"}')
disk=$(df -h | awk '/\/$/{print $5}')

# 发送警报
if (( $(echo "$cpu > 80" | bc -l) )); then
    echo "High CPU usage: $cpu%" | mail -s "Alert" admin@example.com
fi

# 输出报告
echo "CPU: $cpu | Memory: $mem | Disk: $disk"

解释