You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用SED替换HTML生成脚本中PDF对象的文件名?

解决方法:动态替换HTML模板中的PDF文件名

首先,我们需要调整你的脚本和模板文件,让替换逻辑更清晰可靠。这里是具体步骤和修改后的内容:

1. 更新模板文件

把testcontent.txt里的固定PDF文件名改成一个唯一的占位符(比如{{PDF_FILE}}),这样替换时不会误改其他内容:

<div class="content"> <object data="{{PDF_FILE}}" style="width:1920px;height:1080px"></object> </div>

2. 修改Bash脚本

我们可以简化数组处理逻辑,直接遍历PDF文件路径,同时修正原来条件判断的语法错误(原来的[ $summe>0 ]会被Shell解析为重定向,而非数值比较):

#!/bin/bash

# 定义输出的HTML文件路径
html_file="/var/www/html/index.html"
# 清空旧的HTML文件(如果存在)
rm -f "$html_file"

# 先写入HTML头部
cat header.txt > "$html_file"

# 遍历所有PDF文件,动态替换模板并追加到HTML
find /home/info/PDF -type f -print0 | while IFS= read -r -d $'\0' pdf_path; do
    # 提取纯PDF文件名(比如从/home/info/PDF/xxx.pdf得到xxx.pdf)
    pdf_filename=$(basename "$pdf_path")
    # 替换模板中的占位符,将结果追加到HTML文件
    sed "s/{{PDF_FILE}}/$pdf_filename/g" testcontent.txt >> "$html_file"
done

# 最后写入HTML尾部
cat footer.txt >> "$html_file"

关键修改说明

  • 替换逻辑:用sed "s/占位符/实际文件名/g"动态替换模板中的PDF文件名,确保每个循环都生成对应文件的HTML片段。
  • 遍历优化:直接通过find的输出循环处理文件,省去了先存数组再按索引循环的步骤,代码更简洁高效。
  • 条件判断简化:原来的数量判断存在语法错误,现在我们直接先写头部,再处理PDF文件——如果没有PDF,循环不会执行,最终生成的HTML就是头部+尾部,完全符合需求。
  • 特殊字符兼容:所有文件路径变量都用双引号包裹,避免文件名含空格或特殊字符时出现意外错误。

额外提示

如果你的PDF文件不在Nginx的网站根目录(/var/www/html/),需要确保data属性里的路径是Nginx能访问到的正确URL。比如如果PDF放在/var/www/html/pdf/目录,替换时应该写成:

sed "s/{{PDF_FILE}}/pdf\/$pdf_filename/g" testcontent.txt >> "$html_file"

内容的提问来源于stack exchange,提问作者Big_Chungus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:36:22