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