编写你的第一个 Bash 脚本 让我们把到目前为止学到的知识整合起来,创建我们的第一个 Bash 脚本! 脚本规划 作为示例,我们将编写一个脚本,用于收集有关服务器的一些有用信息,例如: 当前磁盘使用情况 当前 CPU 使用率 当前内存使用情况 检查确切的内核版本 你可以根据自己的需求调整脚本,添加或删除功能。 编写脚本 首先,你需要创建一个带有 扩展名的新文件。我将创建一个名为 的文件,因为我们即将编写的脚本将为我们提供服务器的状态信息。 创建文件后,使用你喜欢的文本编辑器打开它。 正如我们在第 1 章中所学的那样,在 Bash 脚本的第一行,我们需要指定所谓的 Shebang): Shebang 的作用是告诉操作系统使用 /bin/bash 可执行文件来运行脚本。
让我们把到目前为止学到的知识整合起来,创建我们的第一个 Bash 脚本!
作为示例,我们将编写一个脚本,用于收集有关服务器的一些有用信息,例如:
你可以根据自己的需求调整脚本,添加或删除功能。
首先,你需要创建一个带有 .sh 扩展名的新文件。我将创建一个名为 status.sh 的文件,因为我们即将编写的脚本将为我们提供服务器的状态信息。
创建文件后,使用你喜欢的文本编辑器打开它。
正如我们在第 1 章中所学的那样,在 Bash 脚本的第一行,我们需要指定所谓的 Shebang:
#!/bin/bash
Shebang 的作用是告诉操作系统使用 /bin/bash 可执行文件来运行脚本。
接下来,正如在第 6 章中讨论的那样,我们先添加一些注释,以便其他人可以轻松了解脚本的用途。为此,你可以在 Shebang 后直接添加以下内容:
#!/bin/bash # Script that returns the current server status
然后,让我们运用在第 4 章中学到的知识,添加一些在整个脚本中可能要用到的变量。
在 Bash 中为变量赋值时,只需使用 = 符号。例如,让我们将服务器的主机名存储在一个变量中,以便稍后使用:
server_name=$(hostname)
通过使用 $(),我们告诉 Bash 实际上要解析命令,然后将值赋给我们的变量。
现在,如果我们回显该变量,就会看到当前的主机名:
echo $server_name
正如你在阅读第 12 章后已经知道的那样,在 Bash 中创建函数需要使用以下结构:
function function_name() { your_commands }
让我们创建一个返回服务器当前内存使用情况的函数:
function memory_check() { echo "" echo "The current memory usage on ${server_name} is: " free -h echo "" }
函数的简要说明:
function memory_check() { - this is how we define the functionecho "" - here we just print a new lineecho "The current memory usage on ${server_name} is: " - here we print a small message and the $server_name variable} - 最后,这就是我们结束函数的方式定义函数后,要调用它,只需使用函数名称:
# Define the function function memory_check() { echo "" echo "The current memory usage on ${server_name} is: " free -h echo "" } # Call the function memory_check
在查看解决方案之前,我建议你使用上面的函数,自己编写几个函数。
这些函数应完成以下任务:
如果你不确定需要使用哪些命令来获取这些信息,可以随时使用 Google 搜索。
准备好后,向下滚动查看我们的实现方式,并比较结果!请注意,实现方法有多种正确的方式!
最终结果如下所示:
#!/bin/bash ## # BASH 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 } all_checks
Bash 脚本编程非常棒!无论你是 DevOps/SysOps 工程师、开发者,还是 Linux 爱好者,都可以使用 Bash 脚本组合不同的 Linux 命令,自动化枯燥且重复的日常任务,从而让你专注于更具生产力和趣味性的事务!
{notice} 本文最初发布于 DevDojo.com
免责声明:
本文件由基于人工智能的机器翻译服务翻译而成。尽管我们力求翻译准确,但请注意,自动翻译可能包含错误或不准确之处。应以原始语言版本的文件为准。对于关键信息,建议使用专业的人工翻译。对于因使用本翻译而产生的任何误解或误读,我们概不负责。