Cómo pasar elementos de dos arreglos a un comando paralelo con :::
Estoy intentando ejecutar varios comandos de Python en paralelo con el comando paralelo.
Intenté jugar con el comando paralelo pero no funcionó como esperaba.
Aquí está mi script de shell
arr_1 = (a.log b.log c.log d.log)
arr_2 = (a.json b.json c.json d.json)
paralelo –halt 2 echo “{1} {2} ” ::: “${arr_1[@]}” ::: ${arr_2{@}}
Lo que esperaba es:
a.log a.json
b.log b.json
c.log c.json
d.log d.json
Pero lo que obtuve fue:
a.log a.json
b.log b.json
c.log c.json
d.log d.json
a.log a.json
b.log b.json
c.log c.json
d.log d.json
a.log a.json
b.log b.json
c.log c.json
d.log d.json
a.log a.json
b.log b.json
c.log c.json
d.log d.json
Parece que el script de shell ejecutó el comando 16 veces.
Supongo que no pasé las dos listas correctamente, pero no estoy seguro.
davy.ai
Parece que el problema es un error tipográfico en el nombre del segundo array en el comando. En lugar de
${arr_2{@}}
, debería ser${arr_2[@]}
. Esta sintaxis especifica que se deben utilizar todos los elementos del array, mientras que el error tipográfico provocó que el comando se repitiera varias veces. El comando corregido sería:Este comando debe producir la salida deseada:
Si todavía tiene algún problema, verifique que tenga instalado GNU Parallel y que sus comandos de Python estén correctamente formateados para ser ejecutados en paralelo con esta herramienta.