Как мне отметить только один выбор как ИСТИННЫЙ в динамическом списке радиостанций zenity?
Вопрос
Это код, который у меня есть на данный момент - он находит все файлы с расширением файла .sv
и перечисляет их в виде zenity
однако в радиолисте ни один из элементов не выбран.Конечно, если я изменюсь awk '{print "FALSE\n"$0}'
к awk '{print "TRUE\n"$0}'
все они будут выбраны, чего я не хочу.
test_name=$(
find ../tests/ -name '*.sv' |
awk '{print "FALSE\n"$0}' |
cut -d "/" -f3 |
cut -d "." -f1 |
zenity --list \
--radiolist \
--title "Select test" \
--text "Tests..." \
--column "Box" \
--column "Files"
) #select test via zenity
Как мне сделать так, чтобы был выбран только первый элемент, а остальные - нет?Я знаю, что это можно сделать с помощью массивов, как предложено этот вопрос/ответ, однако для этого потребовалось бы значительно больше кода.Есть ли более элегантный способ достичь этого?
Решение
Вы можете внести изменения в свой awk
команда для печати "TRUE", если это первая строка, подлежащая обработке.Вы также можете удалить свой cut
команды с помощью basename
:
test_name=$(
find ../tests/ -name '*.sv' -exec basename {} .sv \; |
awk 'NR==1{print "TRUE\n"$0} NR>1{print "FALSE\n"$0}' |
zenity --list \
--radiolist \
--title "Select test" \
--text "Tests..." \
--column "Box" \
--column "Files"
) #select test via zenity
Вы также могли бы использовать sed
вместо `awk:
sed -e '1iTRUE' -e '1!iFALSE'