Shell脚本是Linux系统管理和自动化的重要工具。下面我将详细介绍如何编写Shell脚本。
创建脚本文件
touch myscript.sh
chmod +x myscript.sh # 添加可执行权限
指定解释器 在脚本第一行添加shebang:
#!/bin/bash
或者使用更通用的:
#!/usr/bin/env bash
编写脚本内容 使用文本编辑器(如vim, nano)编辑脚本
name="John" # 定义变量
echo $name # 使用变量
echo ${name} # 推荐使用这种形式
echo "Hello World" # 输出
read -p "Enter your name: " username # 输入
if [ $age -gt 18 ]; then
echo "Adult"
elif [ $age -gt 12 ]; then
echo "Teenager"
else
echo "Child"
fi
for循环:
for i in {1..5}; do
echo "Number: $i"
done
while循环:
count=1
while [ $count -le 5 ]; do
echo "Count: $count"
((count++))
done
function greet() {
echo "Hello, $1"
}
greet "Alice"
参数处理
echo "Script name: $0"
echo "First argument: $1"
echo "All arguments: $@"
echo "Number of arguments: $#"
退出状态
if command; then
echo "Command succeeded"
else
echo "Command failed with exit code $?"
fi
调试脚本
bash -x script.sh # 显示执行过程
set -x # 在脚本中开启调试
set +x # 关闭调试
#!/bin/bash
# 简单备份脚本
BACKUP_DIR="/backup"
SOURCE_DIR="$HOME/documents"
DATE=$(date +%Y%m%d)
if [ ! -d "$BACKUP_DIR" ]; then
mkdir -p "$BACKUP_DIR"
fi
tar -czf "$BACKUP_DIR/backup_$DATE.tar.gz" "$SOURCE_DIR"
if [ $? -eq 0 ]; then
echo "Backup completed successfully"
else
echo "Backup failed" >&2
exit 1
fi
set -euo pipefail
使脚本更健壮
bash
set -euo pipefail # 遇到错误退出,使用未定义变量时报错,管道命令失败时退出
通过掌握这些基础知识,您已经可以编写实用的Shell脚本来自动化Linux系统任务了。