启动命令(phantomjs),从文件中读取两个参数

时间:2014-07-13 09:06:43

标签: parallel-processing phantomjs gnu-parallel

我有一个文件,每行包含两个字符串,它们是从shell启动命令(phantomjs)的两个参数。我会使用GNU parallel为每一行启动我的命令。现在,如果我手动启动,我写道:

./phantomjs rasterize.js http://www.google.it/ google.png

一切正常。但如果我尝试并行,那就出错了:

parallel --verbose -a myfile --no-run-if-empty ./phantomjs rasterize.js

这是输出

./phantomjs rasterize.js http://www.google.it/\ google.png
./phantomjs rasterize.js http://www.anothersite.it/\ pic.png
Usage: rasterize.js URL filename [paperwidth*paperheight|paperformat] [zoom]
  paper (pdf output) examples: "5in*7.5in", "10cm*20cm", "A4", "Letter"
Usage: rasterize.js URL filename [paperwidth*paperheight|paperformat] [zoom]
  paper (pdf output) examples: "5in*7.5in", "10cm*20cm", "A4", "Letter"

我无法理解为什么它不起作用,为什么在详细模式(前两行)后链接有\字符。

cat -vet输出:

http://www.google.it/ google.png$
http://www.anothersite.it/ pic.png$
$
$

1 个答案:

答案 0 :(得分:2)

您非常接近why in verbose mode (first two row) after link there's "\" character?

的答案

GNU Parallel将每一行视为一个参数,并引用任何特殊字符(例如空格)。这就是你所看到的。这是一个功能 - 而不是一个bug。这意味着,无论你放在一行上,它都会被正确引用以用于shell。

但是你不想要默认行为。您希望GNU Parallel将该行拆分为2个参数。您的列分隔符是空格:

parallel --verbose -a myfile --colsep ' ' --no-run-if-empty ./phantomjs rasterize.js