📜  菜单驱动的 Shell 脚本

📅  最后修改于: 2022-05-13 01:57:34.241000             🧑  作者: Mango

菜单驱动的 Shell 脚本

在这里,我们将讨论如何创建菜单驱动的 shell 脚本。我们先来了解一下菜单驱动是什么意思,为什么要学习创建菜单驱动的shell脚本。基本上,菜单驱动的 shell 脚本为用户提供了更多的选项/交互界面。通俗地说,shell 脚本类似于餐厅菜单,假设您在您最喜欢的餐厅,并且您要求提供餐厅菜单,因此您可以选择您最喜欢的菜肴。同样,菜单驱动的 shell 脚本也有相同的用途。

让我们举一个例子来更好地理解:

使用 case esac 语句创建菜单驱动的 shell 脚本:

case 语句类似于其他语言的 switch 语句。 Case 语句是多级 if-then-else 语句的替代方案。使用 case 语句我们可以避免使用多个 if-then-else 并减少脚本大小。大小写用于将多个值与一个值进行匹配。

这里, case是关键字, $condition是我们再次匹配其他几个值的输入值。模式可以是任何东西,可以是字母、整数或正则表达式。模式以右括号“ ) ”结束。如果模式与输入值匹配,则将执行后跟模式的语句,语句以两个分号 ' ;; '。 *)是默认情况,即如果用户输入与任何给定模式不匹配,则将执行此模式后的语句。使用esac关键字来结束 case 语句。它是 'case' 关键字的反义词。

包括的步骤:

  1. 使用 echo语句创建自定义菜单并显示菜单
  2. 使用 while语句创建一个无限循环,该语句接受用户输入选项并连续生成输出,直到用户输入与退出模式匹配。
  3. 使用 read语句从用户那里获取输入并将其存储在变量中。
  4. 使用 case 语句检查输入是否与模式匹配。
  5. 创建自定义模式。
  6. 使用 esac关键字退出 case 语句。
#!/bin/bash

# creating a menu with the following options
echo "SELECT YOUR FAVORITE FRUIT";
echo "1. Apple"
echo "2. Grapes"
echo "3. Mango"
echo "4. Exit from menu "
echo -n "Enter your menu choice [1-4]: "

# Running a forever loop using while statement
# This loop will run untill select the exit option.
# User will be asked to select option again and again
while :
do

# reading choice
read choice

# case statement is used to compare one value with the multiple cases.
case $choice in
  # Pattern 1
  1)  echo "You have selected the option 1"
      echo "Selected Fruit is Apple. ";;
  # Pattern 2
  2)  echo "You have selected the option 2"
      echo "Selected Fruit is Grapes. ";;
  # Pattern 3
  3)  echo "You have selected the option 3"
      echo "Selected Fruit is Mango. ";;    
  # Pattern 4
  4)  echo "Quiting ..."
      exit;;
  # Default Pattern
  *) echo "invalid option";;
  
esac
  echo -n "Enter your menu choice [1-4]: "
done

输出:

在这个脚本中,我们使用echo语句创建了一个简单的菜单。 while : do用于创建一个无限循环以不断询问用户输入,当用户输入选项 4(退出)时,此 while 循环将终止。在这个 while 循环中,我们使用read关键字从用户那里获取输入并将其存储到选择变量中。然后我们使用 case 语句来检查选择变量值是否与任何给定模式匹配。