Bash脚本编写基础指南
编写 Bash 脚本是自动化 Linux/macOS 任务的常用方法。以下是编写 Bash 脚本的简明指南:
一、创建脚本文件
-
新建文件,扩展名通常为
.sh
touch myscript.sh
-
添加执行权限
chmod +x myscript.sh
二、脚本结构
1. Shebang 行(必须)
#!/bin/bash
2. 注释
# 这是单行注释
: '
这是多行注释
可以写多行内容
'
3. 基础示例
#!/bin/bash
echo "Hello World!"
三、核心语法
1. 变量
复制
name="Alice"
echo $name # 使用变量
readonly PI=3.14 # 只读变量
unset name # 删除变量
2. 参数传递
# 执行时:./script.sh arg1 arg2
echo $1 # 第一个参数 → arg1
echo $# # 参数总数
echo $* # 所有参数
3. 条件判断
if [ $a -gt $b ]; then
echo "a 大于 b"
elif [ $a -eq $b ]; then
echo "a 等于 b"
else
echo "a 小于 b"
fi
4. 循环
# for 循环
for i in {1..5}; do
echo $i
done
# while 循环
count=1
while [ $count -le 5 ]; do
echo $count
((count++))
done
5. 函数
function greet() {
echo "Hello, $1!"
}
greet "Bob" # 调用函数 → Hello, Bob!
6. 文件操作
if [ -f "file.txt" ]; then
echo "文件存在"
fi
# 读取文件内容
while read line; do
echo $line
done < file.txt
四、执行脚本
./myscript.sh # 需要执行权限
bash myscript.sh # 直接解释执行
五、调试技巧
显示执行命令
bash -x myscript.sh
检查语法错误
bash -n myscript.sh
六、最佳实践
-
使用双引号包裹变量:
"$var"
-
使用
[[ ]]
代替[ ]
更安全 -
重要操作前添加确认提示
-
使用
set -euo pipefail
增强错误处理:
#!/bin/bash
set -euo pipefail # 任何错误立即退出,未定义变量报错,管道错误捕获
完整示例:文件备份脚本
#!/bin/bash
set -euo pipefail
# 配置
BACKUP_DIR="/var/backups"
TARGET_DIR="$HOME/documents"
DATE=$(date +%Y%m%d)
# 创建备份目录
mkdir -p "$BACKUP_DIR"
# 执行备份
tar -czf "$BACKUP_DIR/backup_$DATE.tar.gz" "$TARGET_DIR"
echo "备份完成:$BACKUP_DIR/backup_$DATE.tar.gz"