如果你想在Shell脚本中实现一个循环判断用户输入是否正确,并根据情况决定是否退出系统,可以使用一个无限循环(如while true)和条件语句来实现。

以下是一个示例代码,用于演示这种情况:

#!/bin/bash

echo "欢迎进入系统"

while true; do
   echo "请输入选项:"
   echo "1. 执行操作A"
   echo "2. 执行操作B"
   echo "3. 退出系统"

  read choice

  case $choice in
       1)
           echo "执行操作A"
           # 这里可以写下执行操作A的代码
          ;;
       2)
           echo "执行操作B"
           # 这里可以写下执行操作B的代码
          ;;
       3)
           echo "确认退出系统?(Y/N)"
          read confirm

           if [[ $confirm == "Y" || $confirm == "y" ]]; then
               echo "正在退出系统..."
               exit 0   # 正常退出,状态码为0
           else
              continue   # 继续循环,回到上面的提示输入选项步骤
           fi
          ;;
      *)
           echo "无效选项,请重新输入。"
          continue   # 继续循环,回到上面的提示输入选项步骤
          ;;
   esac

   # 执行完操作后继续循环,回到上面的提示输入选项步骤
done

# 如果需要,在此处添加其他代码...
  • 举个例子

[root@master01 test]# cat mainMnue.sh
#!/bin/bash

function MainMenu() {

echo "欢迎进入系统"

while true; do
cat << EOF

       1.打飞机自行解决
       2.出钱和我干一炮
       3.你长的太帅了,我自己脱裤子
       4.鸡巴好长,操死我!
       5.不忍直视,回家玩泥巴去吧你!
       6.退出
EOF

read -p  "Beautiful Gial, Please Enter Your Choice!" key

case $key in
       1)
         echo "打飞机自行解决"
      ;;
       2)
         echo "出钱和我干一炮"
      ;;
       3)
         echo "你长的太帅了,我自己脱裤子"
      ;;
       4)
         echo "鸡巴好长,操死我!"
      ;;
       5)
         echo "不忍直视,回家玩泥巴去吧你!"
      ;;
       6)
         read -p "您是否确认退出?[Y/N]" key2
         if [[ "$key2" = "Y" || "$key2" = "y" ]];then
             echo "正在退出系统..."
             exit 0  # 正常退出,状态码为0
         elif [[ "$key2" = "N" || "$key2" = "n" ]];then
             continue   # 继续循环,回到上面的提示输入选项步骤
         else
             exit 1   # 异常退出,状态码为非零值(通常为2)
         fi
      ;;
       *)
         echo "您的输入有误,请重新运行脚本并选择正确的选项。"
         exit 2   # 异常退出,状态码为非零值(通常为1)
      ;;
esac
done
}

MainMenu
 

shell编程实现用户循环输入的更多相关文章

  1. shell编程中用户输入处理(shell 04)

    shell编程中用户输入处理1.命令行参数2.脚本运行时获取输入 命令行参数 通过空格来进行分割的位置参数 :$+position $0,$1,$2 ....$0 :程序名$1,$2,$3 ... $ ...

  2. shell编程基础(5)---循环指令

    while类型的循环 while类型的循环是不定循环的一种,每一次循环都会验证给出的循环条件,判断是否要进行下一次循环.linux中while循环的写法和c语言中很想,但是条件给出的方式有些区别. 首 ...

  3. shell编程:for 循环

    hell 编程——for in 循环   -------for in 格式-------     for 无$变量 in 字符串 do $变量 done   一简单的字符串 枚举遍历法,利用for i ...

  4. Linux - 简明Shell编程13 - 用户输入(UserInput)

    脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 1 - arguments #!/bin/bash i ...

  5. Shell编程基础教程3--Shell输入与输出

    3.Shell输入与输出    3.1.echo        echo命令可以显示文本行或变量,或者把字符串输出到文件        echo [option] string             ...

  6. shell编程(四)之循环控制语句(for,while,until,break,continue,case)

    for循环 语法:for NAME in LIST; do 循环体 done 列表生成方式:1.整数列表 {start...end} $(seq,[start [step]] end)2.glob / ...

  7. shell编程中的循环语句

    while循环直接从文件中读取 while read line do command done < filename until循环 until 条件 do command done for循环 ...

  8. shell编程:for循环

    有几个参数执行几次 do done取代了{} 这种用于 文件的个数,用户的个数等. (())里才可以进行加减乘除.

  9. shell编程:定义简单标准命令集

    shell是用户操作接口的意思,操作系统运行起来后都会给用户提供一个操作界面,这个界面就叫shell,用户可以通过shell来调用操作系统内部的复杂实现,而shell编程就是在shell层次上进行编程 ...

  10. shell编程-1到100的求和与冒泡排序

    Shell编程 一.  for循环 生成列表 {起始数..结束数} 命令生成列表 `seq [起始数] [步进长度] 结束数 ` for  l in {1..5};do for  l in `seq ...

随机推荐

  1. 闭关修炼180天 -- 手写SpringMVC框架(迷你版)

    SpringMvc知识须知 MVC设计模式 Model(模型):模型包含业务模型和数据模型,数据模型⽤于封装数据,业务模型⽤于处理业 务. View(视图): 通常指的就是我们的 jsp 或者 htm ...

  2. 云计算 - 内容分发网络CDN技术与应用全解

    在这篇全面解析CDN的技术文章中,我们深入探讨了CDN的基础概念.核心架构.多样化产品和在不同行业中的应用案例.文章揭示了CDN技术如何优化内容分发,提升用户体验,并展望了CDN面临的挑战和未来发展趋 ...

  3. [MAUI] 混合开发概念

    ​ 混合开发的概念是相对与原生开发来说的:App不直接运行原生程序,而是在原生程序中运行一个Web程序,原生程序中包含Web运行时,用于承载Web页面.暂且将原生应用称之为Web容器,Web容器应该能 ...

  4. 浅谈IT系统性能优化

    一个刚上线的IT系统,往往负载压力不大,所以不会存在什么性能问题.这时,人们大多只关心系统的功能性和用户体验.但是,随着时间推移,用户量和数据量都比刚上线的时候要多很多,高并发和大数据场景下,系统遇到 ...

  5. Idea编译/运行Java程序慢

    修改前: 修改后: 参考: https://www.jjput.com/archives/macbookpro14m1mavenslowcompilation 问题 JDK尽量不要换版本 class ...

  6. UE像素流送是什么?像素流推流原理介绍

    游戏开发者通常在运行游戏逻辑时会将游戏渲染到屏幕的同一台设备上来运行虚幻引擎应用,多人联网游戏可能会在应用程序的多个实例之间分发部分游戏逻辑,但每个单独的实例仍然会为自己的玩家在本地渲染游戏.即使是使 ...

  7. python基础七(函数名称空间及作用域、函数对象、函数嵌套、闭包函数、装饰器)

    一 名称空间(namespaces):存放名字的地方,是对栈区的划分. 有了名称空间之后,就可以在栈区中存放相同的名字,详细的名称空间.分三种1.1 内建名称空间存放的名字:存放的python解释器内 ...

  8. 记录--elementui源码学习之仿写一个el-button

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 本篇文章记录仿写一个el-button组件细节,从而有助于大家更好理解饿了么ui对应组件具体工作细节.本文是elementui源码学习仿写 ...

  9. 神经网络——基于sklearn的参数介绍及应用

    一.MLPClassifier&MLPRegressor参数和方法 参数说明(分类和回归参数一致): hidden_layer_sizes :例如hidden_layer_sizes=(50, ...

  10. 《.NET内存管理宝典 》(Pro .NET Memory Management) 阅读指南 - 第8章

    本章勘误: 暂无,等待细心的你告诉我哦. 本章注解: 暂无 本章释疑: 暂无,等待你的提问 致谢: MVP 林德熙 MVP 吕毅 sPhinX 相关链接 试读记录