将 pdf 文件的页面放入变量中

将 pdf 文件的页面放入变量中

我在将以下指令(指令工作)的输出放入变量时遇到问题:

pdftk file.pdf dump_data | grep NumberOfPages | awk '{print $2}'

例如,当我这样做时:

VARIABLE=$( pdftk file.pdf dump_data | grep NumberOfPages | awk '{print $2}' ) | echo $VARIABLE 

它没有显示变量的值...有人可以告诉我我做错了什么吗?谢谢

答案1

你应该使用:

; echo $VARIABLE

而不是最后一根管子。

答案2

使用:

$ VARIABLE=$( pdftk file.pdf dump_data | grep NumberOfPages | awk '{print $2}' ) ; echo "$VARIABLE" 

问题是使用了|不能与 echo 一起使用的管道 ( )。

答案3

  1. 您不需要将grep的输出通过管道传输到awk. awk 可以进行与 grep 相同类型的正则表达式模式匹配(以及更多)。

  2. 使用变量时需要用双引号引起来。以及命令替换。

  3. 正如其他人已经指出的那样,管道字符不会终止语句。使用新行或;代替。

综合起来:

VARIABLE="$(pdftk file.pdf dump_data | awk '/NumberOfPages/ {print $2}')"
echo "$VARIABLE"

顺便说一句,pdfinfo来自poppler 工具是另一个获取 PDF 文件元数据(包括页数)摘要的好工具。它仅以易于解析的格式为您提供文件元数据(标题、主题、作者、关键字、页数等),而不提供每个单独页面的详细信息(因此在大型 PDF 文件上速度明显更快)。

VARIABLE="$(pdfinfo file.pdf| awk '/Pages/ {print $2}')"
echo "$VARIABLE"

相关内容