Como faço para marcar apenas uma seleção como TRUE em uma radiolista dinâmica do zenity?

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

  •  26-12-2019
  •  | 
  •  

Pergunta

Este é o código que tenho no momento - ele encontra todos os arquivos que possuem a extensão de arquivo .sv e os lista em um zenity radiolist, no entanto, nenhum dos itens é selecionado.Claro, se eu mudar awk '{print "FALSE\n"$0}' para awk '{print "TRUE\n"$0}' todos eles serão selecionados, o que eu não quero.

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

Como faço para selecionar apenas o primeiro item e o restante não?Eu sei que isso pode ser feito usando arrays, como sugerido por esse pergunta/resposta, no entanto, exigiria significativamente mais código.Existe uma maneira mais elegante de conseguir isso?

Foi útil?

Solução

Você pode alterar seu awk comando para imprimir "TRUE" se for a primeira linha a ser processada.Você também pode remover seu 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

Você também pode usar sed no lugar de `awk:

sed -e '1iTRUE' -e '1!iFALSE'
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top