¿Cómo marco solo una selección como VERDADERA en una lista de radio dinámica de zenity?

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

  •  26-12-2019
  •  | 
  •  

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?

¿Fue útil?

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'
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top