Comment marquer une seule sélection comme VRAI dans une radiolist dynamique Zenity ?
Question
C'est le code que j'ai en ce moment - il trouve tous les fichiers qui ont l'extension de fichier .sv
et les répertorie dans un zenity
radiolist, cependant, aucun des éléments n’est sélectionné.Bien sûr, si je change awk '{print "FALSE\n"$0}'
à awk '{print "TRUE\n"$0}'
ils seront tous sélectionnés, ce que je ne veux pas.
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
Comment puis-je faire en sorte que seul le premier élément soit sélectionné et le reste non ?Je sais que cela peut être fait en utilisant des tableaux, comme suggéré par ce question/réponse, mais cela nécessiterait beaucoup plus de code.Existe-t-il une manière plus élégante d’y parvenir ?
La solution
Vous pouvez modifier votre awk
commande pour imprimer "TRUE" si c'est la première ligne à traiter.Vous pouvez également supprimer votre cut
commandes en utilisant 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
Vous pouvez également utiliser sed
à la place de `awk :
sed -e '1iTRUE' -e '1!iFALSE'