虽然我了解如何创建菜单,但我发现没有任何指南教导如何将它们实际链接到命令
我希望有这样的东西:
dialog--clear --title "n00b's spellbook" \
--menu "Choose thine spell:" 20 51 4 \
1 "Name of program" "blah" \
2 "Name of other program" "blah" \
然后不知何故 1 次运行./program1
和 2 次运行./program2
答案1
对不起。错过了重点。没有发现它是对话框包 - @jasonwryan 修复了标记使其更加清晰。 – 所以这是一个完整的重写。
正如手册页所述;我推荐你下载源代码并查看示例文件夹。
如果你在apt-get
世界上,只需说:
apt-get source dialog
cd dialog*/samples
是/否示例的基本示例(经过一些修改):
: ${DIALOG=dialog}
: ${DIALOG_YES=0}
: ${DIALOG_NO=1}
: ${DIALOG_ESC=255}
DIALOG_ERROR=254
export DIALOG_ERROR
$DIALOG --title "YES/NO BOX" --clear "$@" \
--yesno "A simple Yes/No dialog." 15 61
retval=$?
case $retval in
$DIALOG_YES)
echo "YES";;
$DIALOG_NO)
echo "NO";;
$DIALOG_ERROR)
echo "ERROR!";;
$DIALOG_ESC)
echo "ESC pressed.";;
esac
答案2
的手册页对话告诉从哪里开始:
--menu
文本高度 宽度 菜单高度 [ 标签项 ] ...退出时标签所选菜单项的信息将打印在对话框的输出中。
给出的例子
dialog--clear --title "n00b's spellbook" \
--menu "Choose thine spell:" 20 51 4 \
1 "Name of program" "blah" \
2 "Name of other program" "blah" \
由于每行有三个值,因此格式似乎不正确。将其简化为更合理的内容:
dialog --clear --title "n00b's spellbook" \
--menu "Choose thine spell:" 20 51 4 \
1 "Name of program" \
2 "Name of other program"
那么标签值为1
和2
。默认情况下,对话框的输出是标准错误,可以通过重定向来捕获,例如
tempfile=$(mktemp)
dialog --clear --title "n00b's spellbook" \
--menu "Choose thine spell:" 20 51 4 \
1 "Name of program" \
2 "Name of other program" 2> $tempfile
并在 case 语句中使用:
case `cat $tempfile` in
(1) ./program1;;
(2) ./program2;;
esac
中有几个示例脚本来源用于对话。示例脚本执行实用程序脚本,这些脚本创建和删除临时文件,并允许测试环境变量它可以更改对话框的退出代码。
通过研究适当的脚本——菜单在这种情况下,您可以更好地熟悉小部件对话。