优秀的编程知识分享平台

网站首页 > 技术文章 正文

Shell 脚本基础知识

nanyue 2025-03-01 14:54:20 技术文章 8 ℃


作为一名 DevOps 工程师,您可能一直在寻找自动化任务和简化工作流程。 这里就涉及到 shell 脚本了。

Shell 脚本编写的先决条件:Linux 基础知识。

让我们开始吧!

什么是内核?

Linux内核负责管理CPU、内存、输入/输出设备等系统资源。 当您启动Firefox时,内核会与硬件交互,为程序分配系统资源并确保其顺利运行。

什么是shell?

Shell 是一个提供与 Linux 操作系统交互的用户界面的程序。 它允许用户输入命令,例如:ls(列出文件),shell 解释这些命令并代表用户运行。

Linux 中的 Shell 类型

  1. Bash (Bourne-Again SHell):这是 Linux 中最常用的 shell,也是大多数发行版的默认 shell。
  2. Zsh (Z SHell):与 Bash 类似,但提供附加功能和自定义选项。
  3. Ksh (Korn SHell):与 Bash 和 C shell 兼容,并提供高级脚本编写功能。
  4. Csh(C SHell):语法类似于C编程语言,深受开发人员欢迎。
  5. Tcsh (TENEX C SHell):C shell 的改进版本,具有附加功能和改进。

什么是 Linux Shell 脚本?

Shell 脚本是编写可在 Linux CLI 上运行的脚本/程序的过程。 它是用 shell 语言编写的,例如 Bash,用于自动执行重复任务等等。

Shell 脚本是解释型的,而不是编译型的。 当执行脚本时,shell 会逐行读取脚本,而不是立即编译并将其转换为二进制文件。 这有助于修改脚本而无需重新编译。 但是,Shell 脚本的运行速度可能比编译的程序慢。

它用于执行各种 DevOps 任务,例如自动化部署、管理基础设施、部署代码以及监控。

理论已经足够了,让我们实践一下:)

让我们创建一个 shell 脚本来自动执行创建新目录并将其更改为该目录的过程。

#!/bin/bash

# create a new directory
mkdir scripts

#change to new directory
cd scripts
  • 使用 .sh 扩展名保存文件。 例如“change_dir.sh”

检查脚本文件的权限。 它应该必须执行权限 chmod 777 change_dir.sh


  • 执行脚本./change_dir.sh


在上面的代码中,#!/bin/bash 被称为 Shebang。

Shebang 是脚本中的一个特殊字符,它告诉操作系统使用哪个解释器来执行脚本。 我们将使用 Bash 解释器。

以#开头! 接下来是解释器的路径。 /bin/bash 是解释器可执行文件的路径。

编写一个 Shell 脚本,打印 I will Complete #90DaysOofDevOps Challenge

#!/bin/bash

echo "I will complete #90DaysOofDevOps challenge"

该脚本的作用如下:

#!/bin/bash :是一个指定解释器的 Shebang,即 BASH

echo :用于打印消息。

运行脚本:

将代码保存到文件 my_script.sh 中

使其可执行: chmod +x my_script.sh

然后执行脚本./my_script.sh


Shell 脚本中的输入和输出

用户输入:

#!/bin/bash
echo "Enter your name?"
read name

echo "Hi $name, Thanks for reading the blog :)"

该脚本的作用如下:

read name :命令读取用户的输入并将其保存到 $name 变量中。

echo :命令输出一条包含用户名的消息。

运行脚本:

将代码保存到文件 user_input.sh 中

使其可执行:chmod +x user_input.sh

然后执行脚本./user_input.sh


命令行参数:

命令行参数是执行脚本时传递给脚本的参数。

参数作为字符串传递,并且可以使用位置参数进行访问。

$0 用于存储文件名,使用 $1 访问第一个参数,使用 $2 访问第二个参数,依此类推。

$# 用于获取参数总数。

#!/bin/bash

echo "The file name is: $0"
echo "Name: $1"
echo "Age: $2"
echo "Follow for more such content. $1"
echo "The total number of arguments is: $#"


控制结构

控制结构有助于执行代码的条件执行。

Shell 脚本中最常用的控制结构是:

If-else 语句

For循环

If-else 语句

if-else 语句允许有条件地执行代码。

If-else 语句的语法

if [ condition ]
then
    # Code to be executed if condition is true
else
    # Code to be executed if condition is false
fi

通过比较 3 个数字,在 Shell 脚本中使用 If else 编写程序

#!/bin/bash

# Declare the a, b, c Find the greater number among them.
a=10
b=5
c=20

echo "Let's find the greatest number!"
echo "a = $a, b = $b, c = $c"

if [[ $a -gt $b && $a -gt $c ]]
then
    echo "A = $a is greater"
elif [[ $b -gt $a && $b -gt $c ]]
then
    echo "B = $b is greater"
else
    echo "C = $c is greater"
fi

该脚本的作用如下:

if 语句使用 -gt 比较运算符(代表大于)检查变量 a 是否大于 b 和 c。 如果这个条件为真,它会打印“A = $a 更大”。

如果第一个条件为 false,则代码使用 elif 语句检查下一个条件,该语句检查变量 bi 是否大于 a 和 c。 如果这个条件为真,它会打印“B = $b 更大”。

如果第一个和第二个条件都为假,则代码执行 else 块并打印“C = $c isgreater”。


For 循环

For 循环允许重复执行代码特定次数

For 循环的语法:

for variable in values
do
    # Code to be executed
done

编写一个使用 For 循环显示 1 到 10 个数字的程序

#!/bin/bash
echo "For loop to print 1 to 10 numbers!"
for i in {1..10}
do
echo "Value of i is: $i"
done


函数

函数是更容易阅读和执行特定任务的小代码块。

#!/bin/bash

# Define a function for adding two numbers
add_numbers() {
    sum=$(($1 + $2))
    echo "The sum of $1 and $2 is: $sum"
}

# Call the function and pass two numbers as arguments
add_numbers 10 20


最近发表
标签列表