菜单驱动的 Shell 脚本来检查内存和磁盘使用情况
在 Linux 中,大多数时候,我们使用 bash 脚本来自动化操作。有些脚本只有一种功能,但有些脚本可以做不止一种功能。为此,我们必须提供菜单来选择现在应该执行哪个函数的选项。此脚本称为菜单驱动程序。
Free Commands:此命令显示可用空间总量以及系统中使用的内存量和交换内存量,以及内核使用的缓冲区。
句法:
$free [OPTION]
Option:指与free 命令兼容的选项。
例子:
df 命令: df命令(disk free 的缩写),用于显示与文件系统有关的有关总空间和可用空间的信息。
句法 :
df [OPTION]... [FILE]...
例子:
让我们看看菜单驱动程序的基本算法:
- 首先,在脚本中创建所有由 bash 脚本执行的函数
- 然后我们需要向用户提供菜单,用户必须从中选择选项。为此,创建一个函数,如显示菜单,其中包含具有该功能名称的所有选项。
- 现在我们需要读取用户输入的选项,为此我们需要创建另一个函数来读取选项并处理输入。输入后使用 if 语句或 switch 语句但 switch 语句是好的。 switch 语句提到了所有功能与显示菜单函数相同的选项。然后 switch 语句会根据选择调用相应的函数。
- 然后用一段时间调用show menu,取输入函数,直到用户不想退出程序。
逐步方法:
让我们看一个例子来更好地理解。我们将构建一个脚本,它执行两个功能,一个是检查内存使用情况,另一个是磁盘使用情况。现在让我们按照上面的算法移动。
第 1 步:我们将创建两个函数来检查内存使用情况和磁盘使用情况。
memoryUsage(){
echo "Memory Usage:"
free
read -p "Press any key to Continue...."
}
diskUsage(){
echo "Disk Usage:"
df
read -p "Press any key to Continue...."
}
现在我们已经创建了 memoryUsage函数,它提供了内存使用的详细信息和 diskUsage函数,它提供了有关磁盘使用的详细信息。
第 2 步:现在让我们创建一个菜单来向用户显示所需的选项
show_menu()
{
clear
echo "++++++++++++ MENU +++++++++++++"
echo "1. Show Memory Usage."
echo "2. Show DIsk Usage."
echo "3. Exit"
echo "+++++++++++++++++++++++++++++++"
}
show_menu()函数向用户显示菜单,其中包含三个选项:第一个用于内存使用,第二个用于磁盘使用,第三个用于退出程序。
第3步:现在让我们创建根据菜单和处理给定的输入这需要输入的函数:
take_input()
{
local choice
read -p "Select the option from above menu: " choice
case $choice in
1) memoryUsage ;;
2) diskUsage ;;
3) exit 0;;
*) echo "Enter Valid Option!!"
read -p "Press any key to Continue...."
esac
}
take_input函数接受输入并将其传递给函数的 switch 语句。它根据提供的选项调用函数。
第 4 步:现在让我们使用 while 循环调用 show_menu函数和 take_input函数,直到用户不想退出为止。
while true
do
show_menu
take_input
done
下面是完整的实现:
#!/bin/bash
# function to show memory usage
memoryUsage(){
echo "Memory Usage:"
free
read -p "Press any key to Continue...."
}
# function to show disk usage
diskUsage(){
echo "Disk Usage:"
df
read -p "Press any key to Continue...."
}
# function to show menu
show_menu()
{
clear
echo "++++++++++++ MENU +++++++++++++"
echo "1. Show Memory Usage."
echo "2. Show DIsk Usage."
echo "3. Exit"
echo "+++++++++++++++++++++++++++++++"
}
# function to take input
take_input()
{
#take the input and store it in choice variable
local choice
read -p "Select the option from above menu: " choice
#using swich case statement check the choice and call function.
case $choice in
1) memoryUsage ;;
2) diskUsage ;;
3) exit 0;;
*) echo "Enter Valid Option!!"
read -p "Press any key to Continue...."
esac
}
# for loop to call the show_menu and take_input function.
while true
do
show_menu
take_input
done
输出: