동적 zenity radiolist에서 하나의 선택 항목만 TRUE로 표시하려면 어떻게 해야 합니까?

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

  •  26-12-2019
  •  | 
  •  

문제

이것은 현재 내가 가지고 있는 코드입니다. 파일 확장자를 가진 모든 파일을 찾습니다. .sv 그리고 그것들을 zenity radiolist에서는 항목이 선택되지 않았습니다.물론 내가 바뀌면 awk '{print "FALSE\n"$0}' 에게 awk '{print "TRUE\n"$0}' 내가 원하지 않는 모든 것이 선택될 것입니다.

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

첫 번째 항목만 선택되고 나머지 항목은 선택되지 않게 하려면 어떻게 해야 합니까?나는 이것이 제안한대로 배열을 사용하여 수행 될 수 있다는 것을 알고 있습니다. 이것 질문/답변이지만 훨씬 더 많은 코드가 필요합니다.이것을 달성하는 더 우아한 방법이 있습니까?

도움이 되었습니까?

해결책

귀하는 귀하의 awk 처리할 첫 번째 줄인 경우 "TRUE"를 인쇄하는 명령입니다.당신은 또한 제거할 수 있습니다 cut 다음을 사용하여 명령 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

당신은 또한 사용할 수 있습니다 sed `awk 대신:

sed -e '1iTRUE' -e '1!iFALSE'
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top