如何在动态zenity radiolist中仅将一个选择标记为TRUE?

时间:2014-04-14 14:07:54

标签: bash awk zenity

这是我目前的代码 - 它找到所有文件扩展名为.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

如何选择第一个项目,其余项目不是?我知道这可以通过this问题/答案的建议使用数组来完成,但是它需要更多的代码。是否有更优雅的方式实现这一目标?

1 个答案:

答案 0 :(得分:2)

您可以修改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'