2016-03-16 17 views
5

Jak wprowadzić polecenie w GNU równolegle z tablicą? Na przykład, mam tej tablicy:RSS GNU równolegle z tablicą?

x=(0.1 0.2 0.5) 

i teraz chcę karmić go do jakiegoś polecenia w parallel

parallel echo ::: $x 

To nie działa. Jest karmienie wszystkie argumenty do pojedynczego połączenia, ponieważ drukuje to

0.1 0.2 0.5 

zamiast

0.1 
0.2 
0.5 

który jest wyjście

parallel echo ::: 0.1 0.2 0.5 

Jak mogę zrobić to dobrze?

Odpowiedz

4

Jeśli chcesz dostarczyć wszystkie elementy w wykorzystaniu tablicy:

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

Myślę, że lepiej byłoby użyć '" $ {x [@]} "' na wypadek, gdyby elementy tablicy zawierały spacje w przyszłości, np. 'x = (" 0,1 + 6 "" 0,2 - b "" 0,5 + a ")' –

2

Skąd: http://www.gnu.org/software/parallel/man.html

Przykład: Zastosowanie zmiennych powłoki Podczas korzystania zmienne powłoki trzeba zacytować je poprawnie jak oni w innym przypadku mogą być dzielone na przestrzenie.

zauważyć różnicę pomiędzy:

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

oraz:

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

Przy użyciu zmiennych w rzeczywistym polecenia, który zawiera znaki specjalne (np spacja) można je zacytować używając "" $ VAR "" lub używając "'s i -q:

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