Skip to content
Back to skills

Bash Style

ASecurity

Bash 编写规范。当用户操作 .sh、Dockerfile、Makefile、.yml、.yaml 文件, 或在 Markdown 中编写 bash/shell 代码块时触发。 包含注释规范、文件写入方式、Heredoc 引号规则、权限路径、脚本规范等。

  • 1,035 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 28, 2026
ai-agentsshellbashdockerapi

Works with

  • api

Security analysis

A93/100
  • highPerforms destructive filesystem operations

Pro shows the line behind each finding and how to fix it

Scanned May 28, 2026

npx -y skills add doccker/cc-use-exp --skill bash-style --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Bash Style?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Bash Style
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/doccker-bash-style/badge)](https://www.skillsdirectory.com/skills/doccker-bash-style)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: bash-style
description: >-
  Bash 编写规范。当用户操作 .sh、Dockerfile、Makefile、.yml、.yaml 文件,
  或在 Markdown 中编写 bash/shell 代码块时触发。
  包含注释规范、文件写入方式、Heredoc 引号规则、权限路径、脚本规范等。
---

# Bash 编写规范

---

## 1. 注释规范

### 禁止行尾注释

- ❌ **禁止行尾注释**(如 `command # 注释`)
- ✅ 注释应独占一行,放在代码上方

```bash
# ❌ 错误:行尾注释
curl -X POST https://api.example.com/data # 发送请求

# ✅ 正确:注释独占一行
# 发送请求
curl -X POST https://api.example.com/data
```

---

## 2. 文件写入方式

### 推荐方式:tee 命令

```bash
# ✅ 推荐:简洁、无嵌套引号
sudo tee /etc/myapp/config.yml > /dev/null << 'EOF'
server:
  port: 8080
EOF
```

### 方式对比

| 方式 | 优点 | 缺点 | 推荐场景 |
|------|------|------|---------|
| `sudo tee` | 简洁、无嵌套 | 需 `> /dev/null` 抑制输出 | **首选** |
| `sudo bash -c 'cat >'` | 无需 tee | 嵌套引号复杂 | 不推荐 |

---

## 3. Heredoc 引号规则

| 场景 | 用法 | 原因 |
|------|------|------|
| 配置文件 | `<< 'EOF'` | 避免意外展开 |
| 模板生成 | `<< EOF` | 需要插入变量 |
| 不确定时 | `<< 'EOF'` | 更安全 |

---

## 4. 权限与路径

```bash
# ✅ 正确:tee 配合 sudo
echo 'content' | sudo tee /etc/xxx

# ❌ 错误:重定向在 sudo 之外,权限不足
sudo echo 'content' > /etc/xxx
```

---

## 5. 脚本规范

### 文件头

```bash
#!/usr/bin/env bash
set -euo pipefail
```

### set 选项说明

| 选项 | 作用 |
|------|------|
| `-e` | 命令失败时退出 |
| `-u` | 使用未定义变量时报错 |
| `-o pipefail` | 管道中任一命令失败则整体失败 |

### 变量使用

```bash
# ✅ 推荐:使用 ${} 包裹
echo "Hello, ${name}"
db_host="${DB_HOST:-localhost}"

# ❌ 避免:裸变量
echo "Hello, $name_suffix"
```

---

## 6. 常用模式

```bash
# 检查命令是否存在
if ! command -v docker &> /dev/null; then
    echo "docker 未安装"
    exit 1
fi

# 安全删除
rm -rf "${dir:?}"/*
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…