
나는 목록의 목록인 사실을 가지고 있습니다. 예: [ [disk1, filename1], [disk2, filename2], ... [diskN,filenameN] ]
다음과 같은 형식으로 명령을 실행해야 합니다.
command -x disk1,file=filename1 -x disk2,file=filename2 ... -x diskN,file=filenameN
목록을 평면화하고 -x 옵션과 파일을 삽입하여 문자열을 생성하는 방법을 알 수 없습니다.
어떤 제안이라도 감사하겠습니다. 고마워요 빌리
답변1
목록을 보면
disk_file:
- [disk1, filename1]
- [disk2, filename2]
- [diskN, filenameN]
가입하다항목. 예를 들어,
params: "-x {{ disk_file|map('join', ',file=')|join(' -x ') }}"
준다
params: -x disk1,file=filename1 -x disk2,file=filename2 -x diskN,file=filenameN
테스트를 위한 전체 플레이북의 예
- 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
준다
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