Я написал в скрипте bash следующую функцию, но она не работает. Я пропустил что-то очевидное?Вложенный корпус в сценарии 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
}
Конечно! большое спасибо, его удивительное, как вы можете смотреть сценарий на века и пропустить самую очевидную опечатку! cheers чувак! – Morchuboo
Двойные кавычки не нужны для простых «case $ VAR in ...» операторов. Есть как минимум два случая, когда вам не нужны котировки: простое назначение (FOO = $ BAR) и «case ... in» выше. – Idelic
@Idelic: interesting - Я только что проверил оболочки Korn и Bourne (из Solaris 10), а для заданий вы правы. Я не проверял дело. Где-то за последние двадцать пять лет (и это было в тусклом далеком прошлом, а не в живой памяти) я был сожжен некоторыми из этого. Будь то более старые версии оболочек, или недоразумения, или более сложные вещи с «eval», я не помню сейчас - это печально, что для вас старость. Я немного переформатирую ответ, чтобы отметить ваш комментарий. –