1

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

./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"

而且我不明白为什么它不起作用,以及为什么在链接后的详细模式(前两行)中有\字符。

猫兽医输出:

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

1 回答 1

2

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

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

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

parallel --verbose -a myfile --colsep ' ' --no-run-if-empty ./phantomjs rasterize.js
于 2014-07-13T14:42:45.857 回答