Come posso segnare una sola selezione come vera in un radiotromo zenità dinamico?

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

  •  26-12-2019
  •  | 
  •  

Domanda

Questo è il codice che ho al momento - trova tutti i file che hanno l'estensione del file .sv e li elenca in un radiolanista zenity, tuttavia, nessuno degli elementi è selezionato.Naturalmente, se cambio awk '{print "FALSE\n"$0}' a awk '{print "TRUE\n"$0}' saranno selezionati tutti selezionati, che non voglio.

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
.

Come posso essere selezionato solo il primo oggetto e il resto no?So che questo può essere fatto usando gli array, come suggerito da Questa domanda / risposta , tuttavia richiederebbe significativamente più codice.C'è un modo più elegante per raggiungere questo?

È stato utile?

Soluzione

È possibile modificare il comando awk per stampare "true" se è la prima riga da elaborare.Puoi anche rimuovere i comandi cut utilizzando 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
.

Potresti anche usare sed al posto di `Awk:

sed -e '1iTRUE' -e '1!iFALSE'
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top