2016-03-16 12 views
5

Wie füge ich einen Befehl in GNU parallel zu einem Array ein? Zum Beispiel habe ich dieses Array:Feed GNU parallel zu einem Array?

x=(0.1 0.2 0.5) 

und jetzt will ich es bis zu einem gewissen Befehl in parallel

parallel echo ::: $x 

Das funktioniert nicht füttern. Es füttert alle Argumente zu einem einzigen Aufruf, da es

druckt
0.1 0.2 0.5 

statt

0.1 
0.2 
0.5 

, die die Ausgabe von

parallel echo ::: 0.1 0.2 0.5 

ist, wie kann ich es richtig machen?

Antwort

4

Wenn Sie alle Elemente im Array Verwendung zur Verfügung stellen möchten:

parallel echo ::: ${x[@]} 
+4

Ich denke, es wäre besser zu verwenden "$ {x [@]}" für den Fall, dass Array-Elemente in Zukunft Leerzeichen enthalten, z. "x = (" 0,1 + 6 "0,2 - b" "0,5 + a") " –

2

Von: http://www.gnu.org/software/parallel/man.html

BEISPIEL: Verwenden von Shell-Variablen Wenn Shell-Variablen verwenden, müssen Sie sie richtig, wie sie zitieren kann sonst auf Leerzeichen aufgeteilt werden.

Beachten Sie den Unterschied zwischen:

V=("My brother's 12\" records are worth <\$\$\$>"'!' Foo Bar) 
parallel echo ::: ${V[@]} # This is probably not what you want 

und:

V=("My brother's 12\" records are worth <\$\$\$>"'!' Foo Bar) 
parallel echo ::: "${V[@]}" 

Wenn Variablen in der aktuellen Befehl, die Sonderzeichen enthält (zB Leerzeichen) Sie können sie zitieren Verwenden von '' $ VAR '' oder '' und -q:

V="Here are two " 
parallel echo "'$V'" ::: spaces 
parallel -q echo "$V" ::: spaces 
Verwandte Themen