本文目录导读:

我可以为你介绍几种在Shell脚本中将Markdown转换为HTML的方法:
使用 Pandoc(推荐)
#!/bin/bash
# 安装:sudo apt-get install pandoc
# 基本转换
pandoc input.md -o output.html
# 带样式转换
pandoc input.md -o output.html --css=style.css
# 使用模板
pandoc input.md -o output.html --template=template.html
# 批量转换所有md文件
for file in *.md; do
pandoc "$file" -o "${file%.md}.html"
done
使用 markdown 命令行工具
#!/bin/bash
# 安装:sudo apt-get install markdown
# 基本转换
markdown input.md > output.html
# 批量处理
for file in *.md; do
markdown "$file" > "${file%.md}.html"
done
使用 cmark (CommonMark)
#!/bin/bash
# 安装:sudo apt-get install cmark
# 基本转换
cmark input.md > output.html
# 批量处理
for file in *.md; do
cmark "$file" > "${file%.md}.html"
done
完整的Shell脚本示例
#!/bin/bash
# convert_md_to_html.sh
# 检查参数
if [ $# -lt 1 ]; then
echo "用法: $0 <input.md> [output.html]"
exit 1
fi
INPUT_FILE="$1"
OUTPUT_FILE="${2:-${INPUT_FILE%.md}.html}"
# 检查文件是否存在
if [ ! -f "$INPUT_FILE" ]; then
echo "错误: 文件 $INPUT_FILE 不存在"
exit 1
fi
# 检查工具是否可用
if command -v pandoc &> /dev/null; then
echo "使用 Pandoc 转换..."
pandoc "$INPUT_FILE" -o "$OUTPUT_FILE"
elif command -v markdown &> /dev/null; then
echo "使用 markdown 转换..."
markdown "$INPUT_FILE" > "$OUTPUT_FILE"
elif command -v cmark &> /dev/null; then
echo "使用 cmark 转换..."
cmark "$INPUT_FILE" > "$OUTPUT_FILE"
else
echo "错误: 未找到合适的转换工具"
echo "请安装: pandoc, markdown 或 cmark"
exit 1
fi
echo "转换完成: $OUTPUT_FILE"
批量转换脚本
#!/bin/bash
# batch_convert.sh
# 检查参数
SEARCH_DIR="${1:-.}"
# 查找所有md文件并转换
find "$SEARCH_DIR" -name "*.md" -type f | while read file; do
output="${file%.md}.html"
echo "转换: $file -> $output"
if command -v pandoc &> /dev/null; then
pandoc "$file" -o "$output"
else
echo "请安装 pandoc"
exit 1
fi
done
echo "所有文件转换完成"
安装方法
# Ubuntu/Debian sudo apt-get update sudo apt-get install pandoc # 或 sudo apt-get install markdown # 或 sudo apt-get install cmark # macOS brew install pandoc brew install markdown brew install cmark
使用建议
- Pandoc 功能最强大,支持多种格式
- cmark 遵循CommonMark标准,转换结果标准化
- markdown 是最简单的选择
选择哪个工具取决于你的具体需求,Pandoc是最全面的选择。