我有一个文件,每行包含两个字符串,它们是从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$
$
$
答案 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