Comment marquer une seule sélection comme VRAI dans une radiolist dynamique Zenity ?

StackOverflow https://stackoverflow.com//questions/23062310

  •  26-12-2019
  •  | 
  •  

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 ?

Était-ce utile?

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'
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top