1

シェルからコマンド (phantomjs) を起動するための 2 つの引数である、各行に 2 つの文字列を含むファイルがあります。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"

なぜそれが機能しないのか、リンクの後に冗長モード(最初の2行)に\文字があるのか​​ 理解できません。

cat -vet 出力:

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 は各行を 1 つの引数として扱い、特殊文字 (スペースなど) を引用符で囲みます。これがあなたが見るものです。これは機能であり、バグではありません。これは、1 行に何を記述しても、シェルで使用するために正しく引用されることを意味します。

ただし、デフォルトの動作は必要ありません。GNU Parallel で行を 2 つの引数に分割する必要があります。列区切り記号はスペースです:

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