当前位置: 首页 > news >正文

Bash脚本编写基础指南

编写 Bash 脚本是自动化 Linux/macOS 任务的常用方法。以下是编写 Bash 脚本的简明指南:


一、创建脚本文件

  1. 新建文件,扩展名通常为 .sh

touch myscript.sh
  1. 添加执行权限

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

六、最佳实践

  1. 使用双引号包裹变量:"$var"

  2. 使用 [[ ]] 代替 [ ] 更安全

  3. 重要操作前添加确认提示

  4. 使用 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"

 

 

相关文章:

  • 对接印度尼西亚股票数据源API
  • Linux ELF文件格式
  • 【笔记ing】AI大模型-03深度学习基础理论
  • 深入剖析C++中 String 类的模拟实现
  • Java实现快速排序算法
  • Java 数据库访问工具 dbVisitor 的技术解析与同类工具比较
  • Kimi-VL 解读:高效 MoE 视觉语言模型VLM,兼顾长上下文与高分辨率
  • MySQL——学习InnoDB(1)
  • LabVIEW配电器自动测试系统
  • Xmind 2025 中文思维导图
  • MySQL表的使用(4)
  • 【3GPP核心网】【5G】精讲5G系统的策略和计费控制框架
  • 【口腔粘膜鳞状细胞癌】文献阅读
  • 《AI大模型应知应会100篇》第17篇:大模型的偏见与公平性问题
  • 多卡集群 - Docker命令来启动一个容器的实例
  • 【笔记ing】AI大模型-04逻辑回归模型
  • 【vue】class和styles绑定
  • 在AWS EC2上部署网站的完整步骤指南
  • idea版的cursor:Windsurf Wave 7
  • 嵌入式硬件常用总线接口知识体系总结和对比
  • 美团回应京东“二选一”指控:没有任何理由对某平台进行任何限制
  • 国家卫健委:无资质机构严禁开展产前筛查
  • 全球在役最大火电厂被通报
  • A股低开高走,震荡收涨:两市成交10414亿元,4360股收涨
  • 金价新高不断,上金所再发风险提示,黄金能否持续闪耀?
  • 对话地铁读书人|翻译Esther:先读原著,再看电影