问题描述
我正在尝试使用dialog --menu
显示多行描述。
给用户2或3个选择,但有2、3或4行文字作为说明。
到目前为止,这是我得到的:
@H_404_6@(在菜单元素中插入\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 (将#修改为@)