bash脚本中的嵌套大小写

Mor*_*boo 0 bash scripting select case

我在bash脚本中编写了以下函数,但它无法正常工作.我错过了一些明显的东西吗

main_menu() {
dialog \
    --title "Sim Gateway Infomation Utility" \
    --menu "What do you want to do?" 12 60 5 \
    Summary "View overall summary" \
    Details "View details of a sim bank" \
    Modify "Modify used minutes of a sim" \
    Exit "Exit" \
    2>$tempfile

retval=$?
case retval in
    0)

        choice=`cat $tempfile`
        case $choice in
            Summary) summary;;
            Details) details;;
            Modify) modify;;
            Exit) clean_up;;
        esac
        ;;
    1)
        confirm_exit;;
    255)
        confirm_exit;;
esac
Run Code Online (Sandbox Code Playgroud)

}

Jon*_*ler 5

文章讨论dialog; 我没有经验.

你的' case retval in'需要' case $retval in(或' case "$retval" in).

[ @Idelic指出,我原来的答案比必要时更保守.]

字符串'retval'不匹配您在外部case语句中列出的任何选项(使用'*'选项来检测意外情况).如果$retval包含空格,双引号可防止发生意外; 一般来说,在case "$var" in语句中使用双引号(以及大多数其他地方)是个好主意.在这种特殊情况下,没关系; 退出状态始终是一个数字.在' case "$choice" in'陈述中,我对变量周围的引号更加满意 - 但你可能仍然是安全的(我需要阅读更多关于dialog确定它的作用以及它是否会产生空格 - 或者什么都没有甚至).