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」(存在しない可能性がある)というファイル名です。これは2つのファイル名のリストではなく文字列です。

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

関連情報