Bash-Zenity列表显示两个数组中的字段



我想制作一个zenity列表,从一个列表中获取一列的字段,从另一个列表中获取另一列的域

menu=("option1" "option2" "option3")
desc=("description1" "description2" "description3")
ans=`zenity --list --column=Menu "${menu[@]}" --column=Description "${desc[@]}" --height 170`

这不起作用,因为它首先显示第一个列表中的所有值,然后显示另一个:

选项2
菜单描述
选项1
选项3说明1
描述2描述3

来自man zenity:

--column=STRING
Set the column header

因此--column选项将只设置标头,而不会解析数据。在将数据提供给zenity之前,您需要进行一些预处理:

#!/usr/bin/env bash
menu=("option1" "option2" "option3")
desc=("description1" "description2" "description3")
# this for loop will create a new array ("option1" "description1" "option2" ...)
# there will be issues if the 2 arrays don't have the same length    
for (( i=0; i<${#menu[*]}; ++i)); do
data+=( "${menu[$i]}" "${desc[$i]}" )
done
ans=$(zenity --list --column=Menu --column=Description --height 170 "${data[@]}")

相关内容

  • 没有找到相关文章

最新更新