Shell 脚本编写是一项非常有用且强大的技能,可用于自动执行任务、管理系统配置以及简化 DevOps 工作流程。本文我们将要了解一下 Linux 中的 Shell 脚本的基础知识。
什么是 Shell 脚本
简单地说,Shell 脚本就是在脚本文件中编写一系列命令,由 Shell 解释器执行。Shell 充当用户和操作系统之间的接口,解释并执行脚本中的命令。对于 Devops,Shell 脚本在自动化重复性任务、执行系统配置、管理基础设施以及协调各种工具和流程方面发挥着至关重要的作用。它允许 DevOps 专业人员创建自定义工作量,自动化部署、监控系统健康状态等。综上,总结一下 Shell 脚本的作用:
- 自定义工作流程:Shell 脚本可以灵活地创建根据我们特定要求定制的自定义工作流程。
- 执行系统配置:Shell 脚本允许我们配置和管理系统配置、安装软件以及设置环境。
- 集成工具和流程:Shell 可以将不同的工具和流程集成到连贯的管道中,从而实现无缝协作和自动化。
解释器指令
#!/bin/bash
(shebang) 被称为解释器指令,用于指定执行脚本的解释器。在本例中,它表示应使用 Bash shell 解释脚本。Bash(Bourne Again Shell) 是一种广泛使用的 Shell,也是大多数 Linux 发行版的默认 Shell。还有一种写法是可以协程这样:#!/bin/sh
。sh
解释器是对系统默认 Shell 的更为通用的称呼。根据系统的不同,它可能与 Bash 相同,也可能不同。使用 #!/bin/sh
可以让脚本由系统默认的 Shell 执行,它可以是 Bash 或其他兼容的 Shell。值得一提的是,与基本的 POSIX Shell(/bin/sh
)相比,Bash 提供了更多的特性和功能。如果我们的脚本需要特定的 Bash 功能,建议使用 #!/bin/bash
以确保兼容性。
基础使用
1 打印消息
我们从一个简单的打印消息的 Shell 脚本开始学期,创建一个新文件,例如 case1.sh
,并添加一下代码:
#!/bin/bash
echo "这是学习 DevOps 的第三天了"`
上面脚本中,#!/bin/bash
指定解释器为 Bash。执行脚本时,echo
命令用于在终端上显示 "这是学习 DevOps 的第三天了"的信息。保存文件,确保文件是可执行的,如果不可执行请使用这个命令设置权限:chmod 700 case1.sh
,然后运行脚本文件:./case1.sh
。我们将能看到消息显示在终端上,如下所示:
[root@localhost test]# chmod 700 case1.sh
[root@localhost test]# ./case1.sh
这是学习 DevOps 的第三天了
2 获取用户输入和打印变量
Shell 脚本允许我们编写的脚本与用户交互,并动态处理输入。下面是一个脚本示例,它接受用户输入,将其存储到变量中,然后打印变量。
代码语言:javascript复制#!/bin/bash
# 设置变量 var
var="我是一个变量"
# 读取用户输入,并存到到 name 变量中
echo "请输入你的名字:"
read name
# 打印 name 变量
echo "我的名字是 $name"
# 打印预定义的 var 变量
echo "打印 var 变量的值:$var"
上面脚本中,使用 read
命令提示用户输入名字,用户输入的内容存在在 name
变量中。变量 var
预先定义并赋了值,最后脚本打印用户名字和预定义变量的值。以下是输出结果:
[root@localhost test]# vi case2.sh
[root@localhost test]# ./case2.sh
请输入你的名字:
monet
我的名字是monet
打印 var 变量的值:我是一个变量
执行此脚本将提示用户输入输入名字。输入名字后,脚本将希纳是输入的名称和预定义的变量值。
3 if-else 语句的使用
条件语句对于 Shell 脚本的决策至关重要。我们来看下面使用 if-else 语句进行两个数字大小比较的例子。
代码语言:javascript复制#!/bin/bash
# 读取用户输入,并存储到变量 number1
echo "请输入第一个数字:"
read number1
# 读取用户输入,并存储到变量 number2
echo "请输入第二个数字:"
read number2
# 比较两个数字并说明它们是否相等
if [ $number1 -eq $number2 ]; then
echo "两个数字相等"
else
echo "两个数字不相等"
fi
上面脚本中,系统会提示用户输入两个数字,然后脚本使用 if-else 语句来比较数字。如果相等,则会显示”两个数字相等“,反之不相等,显示”连个数字不相等“。下面是过程及输出结果:
代码语言:javascript复制[root@localhost test]# vim case3.sh
[root@localhost test]# ./case3.sh
请输入第一个数字:
12
请输入第二个数字:
12
两个数字相等
[root@localhost test]# ./case3.sh
请输入第一个数字:
13
请输入第二个数字:
12
两个数字不相等
Shell 脚本提供了功能强大的构造,如 if-else 语句,循环和函数,可以让我们在脚本中构建复杂的自动化逻辑和决策。以上就是 Linux 中 Shell 脚本编写的基础知识。Shell 脚本为系统和流程的自动化、定制和高效管理打开了一个充满可能性的世界,随着我们逐渐的学习下去,相信我们会对它越来越熟悉。