从 epub 中提取目录

从 epub 中提取目录

我正在尝试学习脚本并发现了这篇文章从 epub 文件中提取目录,这给了我我需要的部分解决方案,但是当我测试它时,出现了错误error: Extra content at the end of the document

一点背景知识:我有 2 个 epub 文件:1.epub2.epub.我分别测试了每个文件,它工作得很好(从每个 epub 中获取了目录),但是当我尝试使用 测试这两个文件时do,出现了上述错误。

我正在学习脚本,不确定我是否在某个地方犯了错误。任何人都可以指出我的错误是什么?

ps:我的脚本

#! /usr/bin/bash

EPUB_LIST="1.epub 2.epub" 

for f in "$EPUB_LIST"
do
    echo "$f:"
    unzip -p "$f" OEBPS/toc.ncx |
        xml2 |
        sed -n -e 's:^/ncx/navMap/navPoint/navLabel/text=:  :p'
    echo
done

答案1

你的脚本的编写方式,for循环只有要迭代的东西是一个名为“1.epub 2.epub”的文件名(可能不存在)。这不是两个文件名的列表,而是一个字符串。

EPUB_LIST 应该是一个数组。例如

#!/bin/bash

EPUB_LIST=(1.epub 2.epub)
for f in "${EPUB_LIST[@]}"; do
  echo $f:
  unzip -p "$f" OEBPS/toc.ncx |
    xml2 |
    sed -n -e 's:^/ncx/navMap/navPoint/navLabel/text=: :p'
  echo
done

相关内容