Crear parámetros a partir de una lista de listas.

Crear parámetros a partir de una lista de listas.

Tengo un hecho, que es una lista de listas, por ejemplo [[disco1, nombre de archivo1], [disco2, nombre de archivo2], ... [discoN,nombre de archivoN]]

Necesito ejecutar un comando en el formato como command -x disk1,file=filename1 -x disk2,file=filename2 ... -x diskN,file=filenameN

No puedo entender cómo puedo aplanar la lista e insertar la opción -x y archivo para crear la cadena.

Se agradece cualquier sugerencia. gracias billy

Respuesta1

dada la lista

  disk_file:
    - [disk1, filename1]
    - [disk2, filename2]
    - [diskN, filenameN]

unirseLos artículos. Por ejemplo,

  params: "-x {{ disk_file|map('join', ',file=')|join(' -x ') }}"

da

  params: -x disk1,file=filename1 -x disk2,file=filename2 -x diskN,file=filenameN

Ejemplo de un libro de jugadas completo para realizar pruebas.

- hosts: localhost

  vars:

    disk_file:
      - [disk1, filename1]
      - [disk2, filename2]
      - [diskN, filenameN]

    params: "-x {{ disk_file|map('join', ',file=')|join(' -x ') }}"

  tasks:

    - debug:
        var: params
    - command: echo '{{ params }}'
      register: out
    - debug:
        var: out.stdout

da

PLAY [localhost] *****************************************************************************

TASK [debug] *********************************************************************************
ok: [localhost] => 
  params: -x disk1,file=filename1 -x disk2,file=filename2 -x diskN,file=filenameN

TASK [command] *******************************************************************************
changed: [localhost]

TASK [debug] *********************************************************************************
ok: [localhost] => 
  out.stdout: -x disk1,file=filename1 -x disk2,file=filename2 -x diskN,file=filenameN

PLAY RECAP ***********************************************************************************
localhost: ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

información relacionada