Почему этот код списка YAD работает некорректно?

#bash #checkbox #listbox #yad

#bash #флажок #список #yad

Вопрос:

Я пытаюсь включить YAD в свой скрипт, чтобы добавить к нему больше графического интерфейса. (Позже он может быть написан на Python.) Я могу использовать аналогичный код для создания списка с выбираемыми элементами в более ранней части кода без проблем, но этот бит заставляет меня задуматься.

 x=1
for f in "${Basic_Info[@]}" ; do echo " $x $f" ; x=$(( x   1 )) ; done 

album=$(for f in "${Basic_Info[@]}" ; do echo FALSE ; echo "$f" ; done | yad --list 
    --center --title="Album selection" --height="$hite" --width="550" --checklist 
     --column="Select" --column="Artist - Album to use:" --print-column="2" )
  

Приведенное выше приводит к следующему:-
Вывод на экран из цикла echo
Вывод на экран из команды echo

и: вывод списка YAD

введите описание изображения здесь

Если вы не видите прикрепленные изображения, проблема в:-

Цикл for с использованием echo выдает правильный вывод на экран.

Цикл for, передаваемый в список YAD, показывает неверный вывод.

Очевидно, что переменная $hite изменяется в зависимости от количества элементов в массиве Basic_Info, но не влияет на некорректный вывод.

Пожалуйста, кто-нибудь может сказать мне, что происходит, поскольку я начинаю сходить с ума по этой проблеме.

Заранее большое спасибо.

Ответ №1:

у вас есть символ amp; в названиях песен. добавьте опцию —no-markup в yad или фильтруйте вывод цикла через sed «s/ amp;/amp;amp;/g»

Комментарии:

1. Привет, Виктор Ананьевский — добро пожаловать в Stack Overflow. Ваш ответ почти готов — пожалуйста, добавьте немного больше разъяснений о проблеме .. например, что-то вроде — по умолчанию YAD обрабатывает содержимое как разметку, поэтому символы типа amp; должны быть заключены в кавычки, чтобы быть допустимой разметкой, ИЛИ yad следует запускать с параметром —no-markup . И вы можете создать небольшой фрагмент кода (используйте « в строке в начале и в строке после нее), показывающий, как исправить (потому что это не просто amp;, который нужно учитывать, не так ли ??)