Linux 脚本编写是系统管理和自动化的重要技能,主要通过 Shell 脚本实现。以下是详细的编写方法和关键要点:
Shebang 声明
首行指定解释器,例如:
#!/bin/bash # 使用 Bash
#!/bin/sh # 使用系统默认 Shell
注释
用 #
添加注释:
# 这是一个示例脚本
权限设置
脚本需赋予可执行权限:
chmod +x script.sh
运行方式
./script.sh
bash script.sh
bash
name="Alice"
echo "Hello, $name" # 输出变量
bash
echo $PATH # 引用系统变量
export MY_VAR="123" # 设置为环境变量
bash
read -p "Enter your name: " username
bash
echo "Log" >> file.log # 追加
command > output.txt # 覆盖写入
bash
if [ $a -eq $b ]; then
echo "Equal"
elif [ $a -gt $b ]; then
echo "Greater"
else
echo "Less"
fi
bash
[ -f "file.txt" ] # 文件是否存在
[ -z "$var" ] # 变量是否为空
bash
for i in {1..5}; do
echo "Number: $i"
done
bash
while [ $count -lt 10 ]; do
echo $count
((count++))
done
bash
greet() {
echo "Hello, $1!"
}
greet "Alice" # 调用函数
bash
add() {
return $(($1 + $2))
}
add 3 5
echo "Result: $?" # 获取返回值
参数处理
使用 $1
, $2
获取参数,$#
获取参数数量:
echo "First arg: $1"
错误处理
set -e
(任何错误终止脚本)command || echo "Failed"
调试脚本
set -x
bash
set -x
# 调试代码块
set +x
正则表达式
使用 grep
或 =~
运算符:
if [[ "$str" =~ ^[0-9]+$ ]]; then
echo "Numeric"
fi
awk
, sed
, cut
bash
awk '{print $1}' file.txt # 提取第一列
cron
定时运行脚本
bash
crontab -e
# 添加:0 * * * * /path/to/script.sh
备份目录并压缩:
#!/bin/bash
# 定义变量
backup_dir="/home/user/backups"
source_dir="/home/user/data"
# 创建备份目录
mkdir -p $backup_dir
# 生成时间戳
timestamp=$(date +"%Y%m%d_%H%M%S")
# 压缩备份
tar -czf "$backup_dir/backup_$timestamp.tar.gz" "$source_dir"
# 检查是否成功
if [ $? -eq 0 ]; then
echo "Backup completed: $backup_dir/backup_$timestamp.tar.gz"
else
echo "Backup failed!" >&2
exit 1
fi
man bash
或 help
(内置命令)掌握这些方法后,可以逐步尝试更复杂的逻辑(如错误重试、并发处理等)。建议从简单任务开始,逐步积累经验。