Pamele Asked: 2017-12-30 13:26:28 +0800 CST2017-12-30 13:26:28 +0800 CST 2017-12-30 13:26:28 +0800 CST pdf文件的页面到变量中 772 我在将以下指令的输出(指令有效)放入变量时遇到问题: pdftk file.pdf dump_data | grep NumberOfPages | awk '{print $2}' 例如,当我这样做时: VARIABLE=$( pdftk file.pdf dump_data | grep NumberOfPages | awk '{print $2}' ) | echo $VARIABLE 它没有向我显示变量的值...有人可以告诉我我做错了什么吗?谢谢 variable pdf 3 个回答 Voted Best Answer francois P 2017-12-30T13:29:47+08:002017-12-30T13:29:47+08:00 你应该使用: ; echo $VARIABLE 而不是最后一个管道。 user232326 2017-12-30T13:35:39+08:002017-12-30T13:35:39+08:00 利用: $ VARIABLE=$( pdftk file.pdf dump_data | grep NumberOfPages | awk '{print $2}' ) ; echo "$VARIABLE" 问题是使用管道 ( |) 不适用于回声。 cas 2017-12-30T21:15:28+08:002017-12-30T21:15:28+08:00 您不需要将grep的输出通过管道传输到awk. awk 可以进行与 grep 相同的正则表达式模式匹配(以及更多)。 使用变量时需要双引号。和命令替换。 正如其他人已经指出的那样,管道字符不会终止语句。使用新行或;代替。 把所有这些放在一起: VARIABLE="$(pdftk file.pdf dump_data | awk '/NumberOfPages/ {print $2}')" echo "$VARIABLE" 顺便说一句,pdfinfopoppler -utils是另一个用于获取 PDF 文件元数据(包括页数)摘要的好工具。它仅以易于解析的格式为您提供文件元数据(标题、主题、作者、关键字、页数等),而无需有关每个单独页面的详细信息(因此在大型 PDF 文件上速度明显更快)。 VARIABLE="$(pdfinfo file.pdf| awk '/Pages/ {print $2}')" echo "$VARIABLE"
你应该使用:
而不是最后一个管道。
利用:
问题是使用管道 (
|
) 不适用于回声。您不需要将
grep
的输出通过管道传输到awk
. awk 可以进行与 grep 相同的正则表达式模式匹配(以及更多)。使用变量时需要双引号。和命令替换。
正如其他人已经指出的那样,管道字符不会终止语句。使用新行或
;
代替。把所有这些放在一起:
顺便说一句,
pdfinfo
poppler -utils是另一个用于获取 PDF 文件元数据(包括页数)摘要的好工具。它仅以易于解析的格式为您提供文件元数据(标题、主题、作者、关键字、页数等),而无需有关每个单独页面的详细信息(因此在大型 PDF 文件上速度明显更快)。