如何解决显示带有多行描述的菜单
我正在尝试使用dialog --menu
显示多行描述。
给用户2或3个选择,但有2、3或4行文字作为说明。
到目前为止,这是我得到的:
(在菜单元素中插入\n
时)
┌───────────────────Manageable block devices──────────────────────┐
│ Please select source block device for image extraction │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 1 sda_465.8G\n└─sda1_465.8G │ │
│ │ 2 mmcblk0_58.9G\n├─mmcblk0p1_256M\n└─mmcblk0p2_1.9G │ │
│ └─────────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ < OK > <Cancel> │
└─────────────────────────────────────────────────────────────────┘
您会注意到,\n
显示为简单文本。
更不要说这与我的预期相去甚远...
这是我期望得到的结果的一个示例:
┌───────────────────Manageable block devices──────────────────────┐
│ Please select source block device for image extraction │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 1 sda_465.8G │ │
│ │ └─sda1_465.8G │ │
│ │ 2 mmcblk0_58.9G │ │
│ │ ├─mmcblk0p1_256M │ │
│ │ └─mmcblk0p2_1.9G │ │
│ └─────────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ < OK > <Cancel> │
└─────────────────────────────────────────────────────────────────┘
这是让我知道的代码:
#!/bin/zsh
declare -a BUILDING_BLOCK
declare -a BLOCK_DEVICES_LINES
declare -a DIALOG_READY
declare -a MENU_ITEMS
function List_MENU_ITEMS()
{
local TITLES=("${(@f)$(lsblk -d | grep 'disk' | awk '{ print $1"_"$4; }')}")
local TITLE_index=1
BLOCK_DEVICES_LINES=("${(@f)$(lsblk | grep -E 'disk|part' | awk '{ print $1"_"$4; }')}")
local BLKDEV_line=1
local BUILDING_BLOCK="${TITLES[${TITLE_index}]}"
while [[ ${TITLE_index} -le ${#TITLES} ]]
do
DIALOG_TITLE="${TITLE_index}"
BUILDING_BLOCK=${TITLES[${TITLE_index}]}
TITLE_index=$(( ${TITLE_index} + 1 ))
while true
do
BLKDEV_line=$(( ${BLKDEV_line} + 1 ))
if [[ ${BLKDEV_line} -le ${#BLOCK_DEVICES_LINES} && "${TITLES[${TITLE_index}]}" != ${BLOCK_DEVICES_LINES[${BLKDEV_Lines}]}"
then
# Here is inserted the newline which is expected to display a NEWLINE instead of \n (on screen)
BUILDING_BLOCK="${BUILDING_BLOCK}\n${BLOCK_DEVICES_LINES[${BLKDEV_line}]}"
else
break;
fi
done
# Here is built the final array for dialog menu items
MENU_ITEMS+=( "${DIALOG_TITLE}" "${BUILDING_BLOCK}" )
done
}
List_MENU_ITEMS
dialog --title "Manageable block devices" \
--menu "Please select source block device for image creation" \
$(( 9 )) ${COLUMNS} 14 \
"${MENU_ITEMS[@]})"
到目前为止,我已经尝试将\n
替换为\\n
,$'\n'
,未引用\n
,$(echo)
...
另外,我尝试使用选项--cr-wrap
,它也没有帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。