Shell 脚本 101:Shell 脚本中的选择循环

在过去的几个教程中,我们讨论了 shell 脚本中的 while、for 和 until 循环。 让我们学习一下 shell 脚本中的 select 循环, 非常有趣和独特的循环 bash. 为什么它有趣或独特? 让我们今天在本教程中找出答案。

Shell 脚本中的选择循环是什么?

select 循环是一个无限循环,只有在遇到键盘中断或遇到 break 语句时才会结束。 但这并不是使它独特或有趣的原因。 select 语句默认允许用户从多个选项中进行选择 它会提示用户输入。 您不必编写任何代码来接受用户输入,因为选择循环是预先构建的来处理它。

此循环可用于在脚本中制作菜单,同时保持脚本无限循环。 shell 脚本中的 select 循环的另一个好处是它可以与 switch case 语句结合以创建真正交互式的菜单或脚本枢轴。 让我们学习如何使用这个循环并使用它。

创建选择循环

创建选择循环的语法与 for loop 在循环项目列表时。 看看下面的基本选择循环。

select <variable> in <list of items separated by space> do     ... What to do for each option or with the variable ... done 

让我们创建一个真正的选择循环并查看示例输出:

#!/bin/bash PS3="Enter your choice ==> " echo "What do you do?"  select answer in Student Businessman Professional Fresher do     echo "Great! You're a $answer!"  done 

PS3 variable 决定选择循环等待用户输入时将显示的提示。

在 Shell 脚本中选择循环

这真的很神奇吗? 该循环为我们组织并创建了一个非常漂亮的选项菜单,而我们无需做任何事情!

在选择循环中单独处理输入

正如您在上面的示例中看到的,我们拥有的所有 4 个选项的输出都是相同的。 让我们了解如何分别处理输入。 为此,我们将使用 Linux 中的 case 语句. 我们也可以使用 if-elif-else 子句,但正如我们在之前的教程中看到的,switch case 语句在多个选项场景中更有意义。

#!/bin/bash PS3="Enter your choice ==> " echo "What do you do?"  select answer in Student Businessman Professional Fresher do         case $answer in                 Student)                         echo "You're still studying"                         ;;                 Fresher)                         echo "You're new in the job market"                         ;;                 Professional)                         echo "You've been a seasoned professional"                         ;;                 Businessman)                         echo "Wow you work really hard for sure!"                         ;;                 *)                         echo "Well, you need to enter something from the list!"                         ;;         esac done 
使用 Switch Case 语句选择循环

修改 Bash 中的输入提示

这不仅仅与 shell 脚本中的选择循环有关。 PS3 变量是一个环境变量,用于存储您的 bash 提示应该是这样的。 您可以导出此变量以获得您希望在您的 bash 提示或只是为了让它看起来更好。

但是对于选择循环,您可以简单地初始化 PS3 变量以显示您希望脚本显示的提示。 就我而言,我用过 PS3="Enter your choice ==> " 这正是选择循环提示所显示的内容。

结论

我希望这篇关于选择循环的教程对你有用。 我们现在已经介绍了 shell 脚本中可用的所有循环。 如果您对选择循环有任何疑问,请随时在下面发表评论。