Ansible -Как выбрать элемент в выводе

Одно из возможных объяснений состоит в том, что одна команда в цикле читает из stdin (, который в данном случае является тем же потоком, который readпредназначен для чтения из ). Как вы выяснили , это будет ffmpeg, который позволяет пользователю управлять кодировкой с помощью клавиатуры (, если вы не передадите опцию -nostdin), следовательно, чтение из стандартного ввода в получить пользовательский ввод.

Это одна из нескольких проблем, связанных с зацикливанием вывода find.

Используйте:

find... -exec sh -c '
  for mp4file do
   ...
  done' sh {} +

стандартный синтаксис (, в котором stdin shи ffmpegне изменяется ), или один из других подходов, описанных в Почему зацикливание вывода find является плохой практикой? , что также устранит проблемы с именами файлов, которые содержат символы новой строки (или $IFSсодержат 4с вашим подходом ).

-1
30.07.2019, 11:33
1 ответ

Я предполагаю, что вы хотите только отобразить эти данные и ничего с ними не делать:

---

- hosts: all
  tasks:
    - name: show filesystems
      debug:
        msg: "mount: {{ item.mount }}, available: {{ item.size_available | human_readable }}"
      loop: "{{ ansible_mounts }}"
      loop_control:
        label: ""

Этот плейбук будет отображать точку монтирования и доступный размер. Я использовал управление циклом _, чтобы не отображать каждый элемент со всеми свойствами в выводе Ansible.

3
28.01.2020, 05:07

Теги

Похожие вопросы