为Hugo内容 Front Matter 添加页面级变量的脚本

April 26, 2026 hugo 脚本 自动化 Front Matter

在Hugo项目中,我们经常需要在多个内容页面的 front matter 中添加相同的变量,例如为2026世界杯中文平台的所有赛事新闻页面添加一个category = "news"的变量,或者为所有球队介绍页面添加template = "team.html"。手动逐个修改文件效率低下且容易出错。编写一个简单的脚本来自动化这个过程,可以极大地提高开发效率。

以下是一个使用Bash脚本的示例,用于为Hugo项目中的特定类型内容文件添加或更新 front matter 变量。

脚本功能:

脚本示例 (Bash):

#!/bin/bash

# --- 配置 ---
# Hugo项目根目录(当前脚本所在目录或指定路径)
HUGO_PROJECT_ROOT="."
# 要处理的内容目录,相对于HUGO_PROJECT_ROOT
CONTENT_DIR="content/post"
# 要添加的变量名
VARIABLE_NAME="category"
# 要添加的变量值
VARIABLE_VALUE="news"
# Front Matter 格式 (toml 或 yaml)
FRONT_MATTER_FORMAT="toml" # 或 "yaml"

# --- 脚本逻辑 ---
echo "正在为 '$CONTENT_DIR' 目录下的内容文件添加 '$VARIABLE_NAME = \"$VARIABLE_VALUE\"'..."

# 找到所有Markdown文件
find "$HUGO_PROJECT_ROOT/$CONTENT_DIR" -type f -name "*.md" | while read -r file; do
    echo "处理文件: $file"

    # 检查 front matter 格式
    if [ "$FRONT_MATTER_FORMAT" == "toml" ]; then
        START_MARKER="\+\+\+"
        END_MARKER="\+\+\+"
        VARIABLE_LINE="$VARIABLE_NAME = \"$VARIABLE_VALUE\""
        # 检查变量是否已存在
        if grep -q "^$VARIABLE_NAME =" "$file"; then
            echo "  变量 '$VARIABLE_NAME' 已存在,跳过。"
            continue
        fi
        # 在第一个 +++ 之后添加变量
        sed -i "/^$START_MARKER/a $VARIABLE_LINE" "$file"
        echo "  已添加变量: '$VARIABLE_NAME = \"$VARIABLE_VALUE\"'"
    elif [ "$FRONT_MATTER_FORMAT" == "yaml" ]; then
        START_MARKER="---"
        END_MARKER="---"
        VARIABLE_LINE="$VARIABLE_NAME: \"$VARIABLE_VALUE\""
        # 检查变量是否已存在
        if grep -q "^$VARIABLE_NAME:" "$file"; then
            echo "  变量 '$VARIABLE_NAME' 已存在,跳过。"
            continue
        fi
        # 在第一个 --- 之后添加变量
        sed -i "/^$START_MARKER/a $VARIABLE_LINE" "$file"
        echo "  已添加变量: '$VARIABLE_NAME: \"$VARIABLE_VALUE\"'"
    else
        echo "  不支持的 Front Matter 格式: $FRONT_MATTER_FORMAT"
        exit 1
    fi
done

echo "脚本执行完毕。"

如何使用:

  1. 将上述代码保存为一个.sh文件,例如add_variable.sh
  2. 根据你的需求修改脚本顶部的配置部分:HUGO_PROJECT_ROOT, CONTENT_DIR, VARIABLE_NAME, VARIABLE_VALUE, FRONT_MATTER_FORMAT
  3. 在终端中,进入到你的Hugo项目根目录(如果 HUGO_PROJECT_ROOT 设置为.),然后运行脚本:bash add_variable.sh

注意事项:

使用此类脚本,可以轻松地为2026世界杯中文平台的所有内容添加一致性的元数据,这对于网站的组织、SEO和管理都非常有益。关键词:世界杯竞猜, 世界杯下注, 世界杯赔率, 世界杯直播, 世界杯官网。