如何解决多次提示退出菜单
尝试编写一个使用菜单和子菜单的 PowerShell 脚本。当我第一次运行代码并按 Q 退出“主菜单”时,它退出回到控制台。但是,如果我进入“菜单 1”,然后退出“主菜单”,然后再次退出控制台,它会再次运行此代码 $input = Read-Host "Please choose an option"
我已经尝试寻找退出菜单的不同方法,但到目前为止还没有找到太多运气。任何建议将不胜感激
参见下面的示例代码:
function showMainMenu {
function showMenu1 {
do {
Write-Host "================ Menu 1 ================"
Write-Host "1: Option 1"
Write-Host "Q: Back to the main menu"
$input = Read-Host "Please choose an option"
switch ($input) {
'1' {
Write-Host "Some text"
} 'q' {
showMainMenu
}
}
}
until ($input -eq 'q')
}
function showMenu2 {
Write-Host "================ Menu 2 ================"
Write-Host "1: Option 1"
Write-Host "Q: Press Q to quit"
do {
$input = Read-Host "Please choose an option"
switch ($input) {
'1' {
Write-Host "Some text"
} 'q' {
showMainMenu
}
}
}
until ($input -eq 'q')
}
Write-Host "================ Main Menu ================"
Write-Host "1: Menu 1"
Write-Host "2: Menu 2"
Write-Host "3: Press Q to quit"
do {
$input = Read-Host "Please choose an option"
switch ($input) {
'1' {
showMenu1
} '2' {
showMenu2
} 'q' {
return
}
}
pause
}
until ($input -eq 'q')
}
showMainMenu
解决方法
由于使用了 do{}until()
,它陷入了循环。
function showMainMenu {
function showMenu1 {
do {
Write-Host "================ Menu 1 ================"
Write-Host "1: Option 1"
Write-Host "Q: Back to the main menu"
$input = Read-Host "Please choose an option"
switch ($input) {
'1' {
Write-Host "Some text"
} 'q' {
showMainMenu
}
}
}
until ($input -eq 'q')
}
function showMenu2 {
Write-Host "================ Menu 2 ================"
Write-Host "1: Option 1"
Write-Host "Q: Press Q to quit"
do {
$input = Read-Host "Please choose an option"
switch ($input) {
'1' {
Write-Host "Some text"
} 'q' {
showMainMenu
}
}
}
until ($input -eq 'q')
}
Write-Host "================ Main Menu ================"
Write-Host "1: Menu 1"
Write-Host "2: Menu 2"
Write-Host "3: Press Q to quit"
$input = Read-Host "Please choose an option"
switch ($input) {
'1' {
showMenu1
} '2' {
showMenu2
} 'q' {
break
}
}
}
showMainMenu
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。