Diese Frage kommt vondieses andere. Ich dachte, es wäre richtiger, ein weiteres zu erstellen, anstatt das Original zu bearbeiten.
Dies ist mein Beispielszenario (ein Array mit zwei Befehlen, die ich ausführen möchte):
luis@Balanceador:~$ echo ${cmds[@]}
ls -la echo 'hola'
luis@Balanceador:~$ echo ${cmds[0]}
ls -la
luis@Balanceador:~$ echo ${cmds[1]}
echo 'hola'
Ich möchteSpeichern der Ergebnissejedes Befehls in einer Variablen unter Verwendung von GNU Parallel, wie in:
luis@Balanceador:~$ value0="$(${cmds[0]})"
luis@Balanceador:~$ printf "$value0"
total 36
drwxr-xr-x 2 luis luis 512 Jun 26 23:09 .
drwxr-xr-x 13 luis luis 512 Jun 26 22:50 ..
-rw-r--r-- 1 luis luis 1554 Jun 26 18:31 MostrarDatosRed.config
-rwxr-xr-x 1 luis luis 8335 Jun 26 23:44 MostrarDatosRed.sh
-rwxr-xr-x 1 luis luis 98 Jun 26 23:10 TestParallel.sh
-rw-r--r-- 1 luis luis 19 Jun 26 18:01 instrucciones.txt
-rw-r--r-- 1 luis luis 2 Jun 26 22:06 prueba.txt
Und...
luis@Balanceador:~$ value1="$(${cmds[1]})"
luis@Balanceador:~$ printf "$value1"
'hola'
Wie kann ich dies tun mitGNU Parallel?
Antwort1
Ich kenne keine elegante Möglichkeit, dies zu tun. Sopalajo bietet eine Möglichkeit, dies zu tun. Hier ist eine andere, die keine temporären Dateien verwendet, aber falsch reagiert, wenn die Ausgabe \377 (ASCII 255) enthält:
IFS="$(printf "\377")" arr=($(parallel 'echo foo {} ;printf "\377"' ::: a b c))
Antwort2
GNU Parallel umfasst jetzt parset
:
$ parset arr echo foo {} ::: a b c
$ echo ${arr[0]}
foo a
$ echo ${arr[1]}
foo b
$ echo ${arr[2]}
foo c
$ parset v1,v2,v3 echo foo {} ::: a b c
$ echo $v3
foo c
$ parset "v1 v2 v3" echo foo {} ::: a b c
$ echo $v3
foo c
Antwort3
Workaround: Speichern Sie die Ergebnisse in mehrerenDateien.
Beispiel:
parallel {1} '>' comando{#}.txt ::: "${cmds[@]}"
Die Ergebnisse scheinen in Ordnung zu sein:
luis@Balanceador:~$ ls -la comando*
-rw-r--r-- 1 luis luis 532 Jun 27 00:33 comando1.txt
-rw-r--r-- 1 luis luis 5 Jun 27 00:33 comando2.txt
luis@Balanceador:~$ cat comando1.txt
total 40
drwxr-xr-x 2 luis luis 512 Jun 27 00:33 .
drwxr-xr-x 13 luis luis 512 Jun 26 22:50 ..
-rw-r--r-- 1 luis luis 0 Jun 27 00:33 comando1.txt
-rw-r--r-- 1 luis luis 5 Jun 27 00:33 comando2.txt
luis@Balanceador:~$ cat comando2.txt
hola