我想用 bash-dialog 创建一个简单的对话框。我使用 (X)DSL 和 bash-3.2。最新的 (X)DSL 基于 Linux 2.4.31 并附带 bash-2.05,但是 bash-3.2 可从 MyDSL/Testing 下载。因此,我的脚本在“#!/bin/bash-3.2/bin/bash”下运行。
用户可以选择的菜单项来自数据库。
示例数据库文件“骨架”:
室内照明|室内照明
户外照明|户外照明
我从“骨架”文件中将数据检索到数组“选项”中:
options=($(awk -F"|" '{ print $1,$2 }' 骨架)
并在终端“回显”数组:
回声 ${options[@]}
这表明:
“室内电枢” “室内照明” “户外电枢” “户外照明”
这看起来可以用作带有“whiptail”的选择菜单,但事实并非如此。命令行:
whiptail --clear --title "骨架" --menu "选择骨架" 50 80 10 ${options[@]}
显示:
column1-column2
室内电枢
照明用
室内使用
户外电枢
照明用
户外使用
代替:
column1-column2
室内电枢-室内照明
户外电枢-户外照明
似乎带有双引号的数组元素被“whiptail”忽略或看不到。我也尝试过“${options[@]}”,但这总是在第一个单词“Indoor”上产生。
除了'whiptail',我尝试了'dialog',但它们是相同的:版本信息在两种情况下都显示'cdialog(ComeOn Dialog!)版本1.1-20080316'。
我的资源非常有限,我不想冒险(还)进入“xdialog”、“zenity”、“dzen”之类的东西,即使这样可以解决这个问题。由于 XDSL(用于 XBOX),我也仅限于 Linux 2.4.31。
我一直在浏览互联网,但无济于事。'whiptail/dialog' 的解决方案是什么?