0

这是我目前拥有的代码 - 它找到所有具有文件扩展名的文件.sv并将它们列出在zenity单选列表中,但是,没有选择任何项目。当然,如果我更改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

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

4

1 回答 1

3

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'
于 2014-04-14T14:25:38.950 回答