使用 Dialog 和 bash 脚本编写的指南/帮助

使用 Dialog 和 bash 脚本编写的指南/帮助

虽然我了解如何创建菜单,但我发现没有任何指南教导如何将它们实际链接到命令

我希望有这样的东西:

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"

那么标签值为12。默认情况下,对话框的输出是标准错误,可以通过重定向来捕获,例如

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

中有几个示例脚本来源用于对话。示例脚本执行实用程序脚本,这些脚本创建和删除临时文件,并允许测试环境变量它可以更改对话框的退出代码。

通过研究适当的脚本——菜单在这种情况下,您可以更好地熟悉小部件对话

相关内容