スクリプトを学ぶためにこの記事を見つけました。epubファイルから目次を抽出する、必要な部分的な解決策を提供しましたが、テストしたときにエラーが発生しましたerror: Extra content at the end of the document
。
いくつかの背景知識:2つのepubファイルがあります1.epub
。2.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