Bash - 显示来自两个数组的字段的 Zenity 列表
Bash - Zenity list to display fields from two arrays
我想制作一个 zenity 列表,它从一个列表中获取一列的字段,从另一个列表中获取另一列的字段
menu=("option1" "option2" "option3")
desc=("description1" "description2" "description3")
ans=`zenity --list --column=Menu "${menu[@]}" --column=Description "${desc[@]}" --height 170`
这不起作用,因为它首先显示第一个列表中的所有值,然后显示另一个列表中的所有值:
Menu
Description
option1
option2
option3
description1
description2
description3
所以我想我可能需要按交替顺序合并它们,但我不知道如何。
来自 man zenity
:
--column=STRING
Set the column header
因此 --column
选项只会设置 header,而不会解析您的数据。在将数据提供给 zenity 之前,您需要做一些 pre-processing :
#!/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[@]}")
我想制作一个 zenity 列表,它从一个列表中获取一列的字段,从另一个列表中获取另一列的字段
menu=("option1" "option2" "option3")
desc=("description1" "description2" "description3")
ans=`zenity --list --column=Menu "${menu[@]}" --column=Description "${desc[@]}" --height 170`
这不起作用,因为它首先显示第一个列表中的所有值,然后显示另一个列表中的所有值:
Menu | Description |
---|---|
option1 | option2 |
option3 | description1 |
description2 | description3 |
所以我想我可能需要按交替顺序合并它们,但我不知道如何。
来自 man zenity
:
--column=STRING Set the column header
因此 --column
选项只会设置 header,而不会解析您的数据。在将数据提供给 zenity 之前,您需要做一些 pre-processing :
#!/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[@]}")