在 Bash 中创建交互式菜单 在本教程中,我将向您展示如何在 Bash 中创建一个多选菜单,以便用户可以选择要执行的操作! 我们将重用上一章中的部分代码,因此如果您尚未阅读,请务必先阅读。 功能规划 让我们再次从脚本的主要功能开始: 检查当前磁盘使用率 检查当前 CPU 使用率 检查当前 RAM 使用率 检查确切的内核版本 如果您手边没有该脚本,这里是脚本本身: 接下来,我们将构建一个菜单,允许用户选择要执行的功能。 当然,您可以根据需要调整现有功能或添加新功能。 添加一些颜色 为了让菜单更“易读”且一目了然,我们将添加一些颜色函数。 在脚本的开头添加以下颜色函数: 您可以按如下方式使用颜色函数: 上述代码会输出字符串 ,并且文本颜色为蓝色!
在本教程中,我将向您展示如何在 Bash 中创建一个多选菜单,以便用户可以选择要执行的操作!
我们将重用上一章中的部分代码,因此如果您尚未阅读,请务必先阅读。
让我们再次从脚本的主要功能开始:
如果您手边没有该脚本,这里是脚本本身:
#!/bin/bash ## # BASH menu script that checks: # - Memory usage # - CPU load # - Number of TCP connections # - Kernel version ## server_name=$(hostname) function memory_check() { echo "" echo "Memory usage on ${server_name} is: " free -h echo "" } function cpu_check() { echo "" echo "CPU load on ${server_name} is: " echo "" uptime echo "" } function tcp_check() { echo "" echo "TCP connections on ${server_name}: " echo "" cat /proc/net/tcp | wc -l echo "" } function kernel_check() { echo "" echo "Kernel version on ${server_name} is: " echo "" uname -r echo "" } function all_checks() { memory_check cpu_check tcp_check kernel_check }
接下来,我们将构建一个菜单,允许用户选择要执行的功能。
当然,您可以根据需要调整现有功能或添加新功能。
为了让菜单更“易读”且一目了然,我们将添加一些颜色函数。
在脚本的开头添加以下颜色函数:
## # Color Variables ## green='\e[32m' blue='\e[34m' red='\e[31m' clear='\e[0m' ## # Color Functions ## ColorGreen(){ echo -ne $green$1$clear } ColorBlue(){ echo -ne $blue$1$clear }
您可以按如下方式使用颜色函数:
echo -ne $(ColorBlue 'Some text here')
上述代码会输出字符串 Some text here,并且文本颜色为蓝色!
最后,为了添加我们的菜单,我们将为菜单选项创建一个带有 case 语句的独立函数:
menu(){ echo -ne " My First Menu $(ColorGreen '1)') Memory usage $(ColorGreen '2)') CPU load $(ColorGreen '3)') Number of TCP connections $(ColorGreen '4)') Kernel version $(ColorGreen '5)') Check All $(ColorGreen '0)') Exit $(ColorBlue 'Choose an option:') " read a case $a in 1) memory_check ; menu ;; 2) cpu_check ; menu ;; 3) tcp_check ; menu ;; 4) kernel_check ; menu ;; 5) all_checks ; menu ;; 0) exit 0 ;; *) echo -e "${red}Wrong option.${clear}"; menu ;; esac }
首先,我们使用一些颜色输出菜单选项:
echo -ne " My First Menu $(ColorGreen '1)') Memory usage $(ColorGreen '2)') CPU load $(ColorGreen '3)') Number of TCP connections $(ColorGreen '4)') Kernel version $(ColorGreen '5)') Check All $(ColorGreen '0)') Exit $(ColorBlue 'Choose an option:') "
然后,我们读取用户的答案并将其存储在名为 $a 的变量中:
read a
最后,我们使用 case 语句,根据 $a 的值触发不同的函数:
case $a in 1) memory_check ; menu ;; 2) cpu_check ; menu ;; 3) tcp_check ; menu ;; 4) kernel_check ; menu ;; 5) all_checks ; menu ;; 0) exit 0 ;; *) echo -e "${red}Wrong option.${clear}"; menu ;; esac
最后,我们需要调用菜单函数以实际打印菜单:
# Call the menu function menu
最终,您的脚本将如下所示:
#!/bin/bash ## # BASH menu script that checks: # - Memory usage # - CPU load # - Number of TCP connections # - Kernel version ## server_name=$(hostname) function memory_check() { echo "" echo "Memory usage on ${server_name} is: " free -h echo "" } function cpu_check() { echo "" echo "CPU load on ${server_name} is: " echo "" uptime echo "" } function tcp_check() { echo "" echo "TCP connections on ${server_name}: " echo "" cat /proc/net/tcp | wc -l echo "" } function kernel_check() { echo "" echo "Kernel version on ${server_name} is: " echo "" uname -r echo "" } function all_checks() { memory_check cpu_check tcp_check kernel_check } ## # Color Variables ## green='\e[32m' blue='\e[34m' red='\e[31m' clear='\e[0m' ## # Color Functions ## ColorGreen(){ echo -ne $green$1$clear } ColorBlue(){ echo -ne $blue$1$clear } menu(){ echo -ne " My First Menu $(ColorGreen '1)') Memory usage $(ColorGreen '2)') CPU load $(ColorGreen '3)') Number of TCP connections $(ColorGreen '4)') Kernel version $(ColorGreen '5)') Check All $(ColorGreen '0)') Exit $(ColorBlue 'Choose an option:') " read a case $a in 1) memory_check ; menu ;; 2) cpu_check ; menu ;; 3) tcp_check ; menu ;; 4) kernel_check ; menu ;; 5) all_checks ; menu ;; 0) exit 0 ;; *) echo -e "${red}Wrong option.${clear}"; menu ;; esac } # Call the menu function menu
要测试脚本,创建一个名为 .sh extension, for example: menu.sh 的新文件,然后运行它:
bash menu.sh
您将得到如下输出:
My First Menu 1) Memory usage 2) CPU load 3) Number of TCP connections 4) Kernel version 5) Check All 0) Exit Choose an option:
您可以从列表中选择不同的选项,每个数字都会调用脚本中的不同函数:

现在您已经知道如何创建 Bash 菜单,并将其集成到您的脚本中,以便用户可以选择不同的选项!
{notice} 此内容最初发布在 DevDojo.com 上。
免责声明:
本文件由基于人工智能的机器翻译服务翻译而成。尽管我们力求翻译准确,但请注意,自动翻译可能包含错误或不准确之处。应以原始语言版本的文件为准。对于关键信息,建议使用专业人工翻译。对于因使用本翻译而产生的任何误解或误读,我们概不负责。