Shell脚本编程 — Shell Script
- 基本概念
- 示例脚本
- 示例1:备份文件
- 示例2:监控磁盘使用情况
- 示例3:批量重命名文件
- 运行脚本
- 提示
Shell脚本是一种编程语言,主要用于在Unix/Linux系统中自动化执行任务。它通过编写一系列的命令来完成特定的任务。
基本概念
-
Shebang: 每个Shell脚本的开头通常都有一个shebang行,用于指定解释器。例如:
#!/bin/bash
-
注释: 使用
#
来添加注释。# 这是一个注释
-
变量: 变量不需要声明,直接赋值即可。
name="Kimi" echo "Hello, $name"
-
条件语句:
if [ "$name" = "Kimi" ]; then echo "Hi, Kimi!" else echo "Who are you?" fi
-
循环:
for i in 1 2 3 4 5; do echo "Number: $i" done while [ $i -le 5 ]; do echo "Number: $i" i=$((i + 1)) done
-
函数:
greet() { echo "Hello, $1" } greet "Kimi"
示例脚本
示例1:备份文件
这个脚本将指定目录中的文件备份到另一个目录。
#!/bin/bash
# 源目录
SOURCE_DIR="/path/to/source"
# 备份目录
BACKUP_DIR="/path/to/backup"
# 创建备份目录,如果不存在
mkdir -p "$BACKUP_DIR"
# 复制文件
cp -r "$SOURCE_DIR"/* "$BACKUP_DIR"
echo "备份完成!"
示例2:监控磁盘使用情况
这个脚本会检查磁盘使用情况,如果超过指定阈值,则发送警告邮件。
#!/bin/bash
# 设置磁盘使用阈值
THRESHOLD=80
# 设置邮件接收者
EMAIL="your_email@example.com"
# 获取当前磁盘使用情况
USAGE=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')
if [ "$USAGE" -gt "$THRESHOLD" ]; then
echo "磁盘使用率已超过 $THRESHOLD%" | mail -s "磁盘使用警告" "$EMAIL"
fi
示例3:批量重命名文件
这个脚本将目录中的所有 .txt
文件重命名为 .bak
文件。
#!/bin/bash
# 目标目录
TARGET_DIR="/path/to/directory"
# 遍历目录中的所有 .txt 文件
for file in "$TARGET_DIR"/*.txt; do
# 获取文件名(不包括扩展名)
base=$(basename "$file" .txt)
# 重命名文件
mv "$file" "$TARGET_DIR/$base.bak"
done
echo "文件重命名完成!"
运行脚本
-
赋予执行权限:
chmod +x script.sh
-
运行脚本:
./script.sh
提示
- 使用
set -e
可以让脚本在遇到错误时立即退出。 - 使用
set -x
可以在执行每一行命令之前打印该命令,方便调试。
当然可以!Shell脚本是一种用于在Unix/Linux系统中自动化执行任务的脚本语言。它通过编写一系列的命令来完成特定的任务。下面我将详细解释Shell脚本的各个方面,包括基本语法、变量、控制结构、函数、输入输出等。