質問

次の関数を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

}

役に立ちましたか?

解決

これ 論文 議論します dialog;私はそれを経験していません。

君の 'case retval in「必要です」case $retval in (また 'case "$retval" in).

[@Idelicは、私の元の答えは必需品よりも保守的だったと指摘しています。]

文字列の「retval」は、外側のケースステートメントにリストしたオプションのいずれも一致しません(「*」オプションを使用して、予期しないことを検出します)。二重引用符は、事故を防ぎます $retval これまでにスペースが含まれていました。一般に、変数の周りに二重引用符を使用することをお勧めします case "$var" in ステートメント(および他のほとんどの場所)。この特定のケースでは、それは問題ではありません。出口ステータスは常に数字です。の中に 'case "$choice" in'ステートメント、私は変数の周りの引用にもっと慣れているでしょう - しかし、あなたはまだ安全かもしれません(私はもっと読む必要があります dialog それが何をしているのか、それが空間を生成するかどうかを確認するために - または何もしません)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top