¿Cómo marco solo una selección como VERDADERA en una lista de radio dinámica de zenity?
Pregunta
Este es el código que tengo en este momento: busca todos los archivos que tienen la extensión de archivo .sv
y los enumera en un zenity
radiolist, sin embargo, no se selecciona ninguno de los elementos.Por supuesto, si cambio awk '{print "FALSE\n"$0}'
a awk '{print "TRUE\n"$0}'
Todos serán seleccionados, lo cual no quiero.
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
¿Cómo hago para que solo se seleccione el primer elemento y el resto no?Sé que esto se puede hacer mediante el uso de matrices, como lo sugiere este pregunta/respuesta, sin embargo, requeriría mucho más código.¿Existe una forma más elegante de lograr esto?
Solución
Puedes modificar tu awk
comando para imprimir "VERDADERO" si es la primera línea que se procesará.También puedes eliminar tu cut
comandos usando 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
También podrías usar sed
en lugar de `awk:
sed -e '1iTRUE' -e '1!iFALSE'