为什么' sh -c'从我的实际命令返回不同的结果?

时间:2018-06-16 23:50:48

标签: node.js linux shell unix

我试图通过命令行获取PDF文件中的页数。

pdfinfo "/tmp/temp.pdf" | grep Pages: | awk '{print $2}'

产生

3

在Node.js中,我需要使用' sh'因为管道。

但是

sh -c "pdfinfo '/tmp/temp.pdf' | grep Pages: | awk '{print $2}'"

产生

Pages:          3

为什么我会得到不同的输出?

1 个答案:

答案 0 :(得分:2)

$connection命令是双引号,这将扩展可能为空的sh -c,因此$2命令变为awk,它打印整行。你可以逃避print以防止它被扩展:

$

顺便说一下,sh -c "pdfinfo '/tmp/temp.pdf' | grep Pages: | awk '{print \$2}'" 可以进行模式匹配,因此不需要awkgrep

awk