Come posso segnare una sola selezione come vera in un radiotromo zenità dinamico?
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?
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'
.