我在将以下指令(指令工作)的输出放入变量时遇到问题:
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
您不需要将
grep
的输出通过管道传输到awk
. awk 可以进行与 grep 相同类型的正则表达式模式匹配(以及更多)。使用变量时需要用双引号引起来。以及命令替换。
正如其他人已经指出的那样,管道字符不会终止语句。使用新行或
;
代替。
综合起来:
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"