#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
и: вывод списка 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;, который нужно учитывать, не так ли ??)