我想通过以下方式将多个网页转换为 pdf 文件:
wkhtmltopdf http://think-like-a-git.net/sections/about-this-site.html http://think-like-a-git.net/sections/about-this-site/who-this-site-is-for.html all.pdf
如果我将两个输入参数放入名为“links”的文本文件中:
http://think-like-a-git.net/sections/about-this-site.html
http://think-like-a-git.net/sections/about-this-site/who-this-site-is-for.html
我该如何根据文件指定输入参数?以下不起作用:
$ wkhtmltopdf "$(cat links)" all.pdf
Loading pages (1/6)
Counting pages (2/6)
Resolving links (4/6)
Loading headers and footers (5/6)
Printing pages (6/6)
Done
Exit with code 1 due to network error: ContentNotFoundError
答案1
当您在 中使用双引号时"$(cat links)"
,shell 将文件的整个内容视为一个字符串,而不是分隔的字段(每个字段是文件中的一行)。
你可以这样做:
set -f # Turn off globbing
IFS=' # Split on newline only
'
wkhtmltopdf $(cat links) all.pdf
答案2
你可以:
readarray -t a < file
wkhtmltopdf "${a[@]}" all.pdf
readarray
逐行将其读file
入数组,-t
删除尾随换行符。"${a[@]}"
引用所有数组元素。这会生成以下形式的命令:
wkhtmltopdf "${a[0]}" "${a[1]}" "${a[2]}" "..." all.pdf