如何在动态zenity放射学家中仅将一个选择标记为TRUE



这是我目前拥有的代码-它会找到所有文件扩展名为.sv的文件,并将它们列在zenity放射性列表中,但没有选择任何项目。当然,如果我将awk '{print "FALSEn"$0}'更改为awk '{print "TRUEn"$0}',它们都将被选中,这是我不希望的。

test_name=$(
    find ../tests/ -name '*.sv' | 
    awk '{print "FALSEn"$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"。您也可以使用basename:删除cut命令

test_name=$(
    find ../tests/ -name '*.sv' -exec basename {} .sv ; | 
    awk 'NR==1{print "TRUEn"$0} NR>1{print "FALSEn"$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'

相关内容

  • 没有找到相关文章

最新更新