0

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

}

4

1 に答える 1

5

この記事では、次のことについて説明しdialogます。私はそれを経験していません。

' ' は ' (または ' )case retval inである必要があります。case $retval incase "$retval" in

[ @Idelic は、私の最初の回答が必要以上に保守的であったことに注意してください。]

文字列 'retval' は、outer case ステートメントにリストしたオプションのいずれにも一致しません (予期しないものを検出するには、'*' オプションを使用してください)。二重引用符は、スペースが含まれている場合の事故を防ぎ$retvalます。case "$var" in一般に、ステートメント内の変数 (および他のほとんどの場所) を二重引用符で囲むことをお勧めします。この特定のケースでは、それは問題ではありません。終了ステータスは常に数値です。' 'ステートメントでは、変数を引用符で囲んだ方が快適ですが、それでも安全かもしれません(それが何をするのか、スペースを生成するのか、それとも何も生成しないのかを確認するためにcase "$choice" in、もっと読む必要があります)dialog平)。

于 2009-09-25T14:20:57.070 に答える