zhcn 技术 手机 什么是 Bash 脚本以及如何在 Linux 上编写它们?

什么是 Bash 脚本以及如何在 Linux 上编写它们?

假设您有一系列需要重复多次的 Linux 命令。您可以将命令编写一千遍并诅咒自己的命运,也可以在 Linux 上编写一个小而简单的 bash 脚本来自动执行这项繁琐的任务。本文介绍了什么是 bash 脚本、它们的优点以及如何在 Linux 上编写 bash 脚本。

什么是 Bash 脚本以及如何在 Linux 上编写它们?
什么是 Bash 脚本以及如何在 Linux 上编写它们?

Linux 上的 Bash 脚本是什么

就像电影剧本让演员知道如何表演特定场景一样。类似地,Bash 脚本是一个包含一系列 Linux 命令的文件,这些命令在运行时就像在 shell 提示符中键入一样,从而实现工作流程的自动化。所有 bash 脚本都有 .sh 扩展名、“shebang 行” – #/bin/bash ,并且可以通过 shell 提示符直接运行。

换句话说,bash 脚本将特定任务需要单独运行的所有命令组合在一起。现在您已经知道 Linux 上的 bash 脚本是什么了,让我们来看看它的好处。

什么是 Bash 脚本以及如何在 Linux 上编写它们?
什么是 Bash 脚本以及如何在 Linux 上编写它们?

在 Linux 上使用 Bash 脚本的优点

一般来说,Bash 脚本是一种功能强大且多功能的工具,已成为每个系统管理员、开发人员和高级用户的重要组成部分。使用 bash 脚本的主要优点是:

  • 自动化:这可能是使用 bash 脚本最受欢迎的好处。 Bash 脚本允许您自动执行最繁琐和重复性的任务,从而减少工作量、节省时间并最大限度地减少错误。
  • 灵活性:您可以创建自定义 bash 脚本来满足您的需求。您还可以集成外部应用程序和脚本以进一步简化您的工作流程。
  • 可移植性:您可以编写 bash 脚本来执行特定任务,并且只要系统上安装了所需的依赖项,bash 脚本就可以在任何 Linux 发行版上运行。 Bash 脚本还可以在其他类 Unix 系统(例如 macOS)上使用,也可以通过 WSL 在 Windows 上使用。
  • 集成:Bash 脚本可以与其他工具集成,例如数据库、API,甚至其他 bash 脚本,使用户能够充分利用第三方工具的潜力来完成复杂的任务。
  • 易于编写:由于 Linux 用户已经熟悉的简单语法,Bash 脚本非常容易编写。您不需要任何特殊的工具或软件来创建 bash 脚本。这使您可以快速制作想法和新工具的原型。
  • 低学习曲线:Bash 脚本的学习曲线相对较低,使其成为初学者和经验丰富的用户的理想选择。
什么是 Bash 脚本以及如何在 Linux 上编写它们?
什么是 Bash 脚本以及如何在 Linux 上编写它们?

Linux 的基本 Bash 脚本组件

如果环顾四周,几乎所有 bash 脚本都是由一些充当构建块的常见和基本组件组成。这些块为整个脚本添加了功能结构。

1. 舍邦 (#!)

所有 bash 脚本都以“shebang 行”开头,指定要使用的 Linux 解释器的路径。写法如下:

 #!/bin/bash

2.Bash脚本注释

即使注释在运行 bash 脚本时被解释器简单地忽略。这些仅用于向用户提供有关代码的附加信息。它还提高了整体代码的可读性。要注释 bash 脚本,只需在行首添加一个八角形 (#) 即可。

例如:

 # This is a comment line

3. 变量

bash 脚本中的变量对于在内存中临时存储不同类型的数据非常有用。要为 bash 脚本中的变量赋值,请使用以下语法:

 <variable_name>=<value_to_store>

例如,要将“John”存储在变量“name”中:

 name="John"

要访问存储在“name”变量中的值,只需在其前面添加“$”符号即可。

 echo "Hello, $name"

这里,存储在“name”变量中的值被插入到 echo 语句中,最终输出打印如下:

 Hello, John

4.回显命令

echo 命令是一个简单但有用的命令,用于将值显示为输出。使用 echo 命令打印的语法是:

 echo <value_to_print>

5. Bash 脚本中的 If-Else

根据不同的情况,您可能需要做出情境决定。在 bash 中,您可以使用ifthenelse命令通过以下语法做出不同的决定:

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

以下是可用于 bash 中的条件脚本的不同字符集。

字符集解释
&&逻辑产品。用于比较两个条件,仅当两个条件都满足时才返回 true。
-eq等于;用于检查两个值是否相等
-嘿不等于;检查一个值是否不等于另一个值
-lt小于;用于检查第一个值是否小于第二个值
-gt大于;检查第一个值是否大于第二个值
-le小于或等于;检查第一个值是否小于或等于第二个值
-ge大于或等于;检查第一个值是否大于或等于第二个值

例如,检查变量中的两个值是否相等:

 if [ $a -eq $b ]
then
    echo "Equal"
else
    echo "Not Equal"
fi

6. 循环

当一系列语句或命令需要重复多次时,使用循环。在 bash 脚本中,您可以根据循环需要使用“for 循环”或“while 循环”。

For循环

“For 循环”是一种循环结构,当您确切地知道一组语句需要重复或用于遍历列表多少次时使用。在 Linux bash 脚本中使用 for 循环的语法是:

 for <loop_variable> in <sequence>
do
    # commands to be executed for each item in the <sequence>
done

以下是上述语法的细分:

  • <loop_variable>指向一个临时变量,该变量在每次迭代期间保存 <sequence> 的每一项。您可以为 <loop_variable> 选择任何名称。
  • <sequence>包含 for 循环迭代的项目。您可以指定 <sequence>,如下所示:
    • 数字范围:一系列均匀分布的数字。您可以使用以下语法生成范围:“{<start_number> .. <结束号码> }”。
    • 项目列表:您可以指定由空格分隔的显式项目列表,例如item1 item2 item3
    • 命令输出:命令的输出也可以使用$(<command>)等语法用作 <sequence> 。
  • do标记包含需要重复执行的语句的循环体的开始。
  • “done”表示循环结束。

例如,要打印 1 到 5 之间的所有整数:

 for i in {1..5}
do
    echo "Number: $i"
done

While 循环

通常,当您不确切知道一组特定语句需要重复多少次时,会使用 while 循环。重复语句直到满足特定的设定条件。使用 while 循环的语法是:

 while [ <test_condition> ]
do
    # commands to be executed while the condition is true
done

上面的语法看起来像这样:

  • <test_condition>指的是在每次迭代之前测试是否满足的条件。如果不再满足条件,则循环退出而不进入循环体。
  • do标记包含需要重复执行的语句的循环体的开始。
  • “done”表示循环结束。

例如,要打印 1 到 5 之间的所有整数:

 i=1
while [ $i -le 5 ]
do
    echo "$i"
    i=$((i + 1))
done
什么是 Bash 脚本以及如何在 Linux 上编写它们?
什么是 Bash 脚本以及如何在 Linux 上编写它们?

如何在 Linux 上编写 Bash 脚本

现在您已经了解了 Linux 上 bash 脚本的基本构建块,让我们继续讨论如何为 Linux 系统编写 bash 脚本。

第 1 步:创建一个新文件

您可以使用 Linux 上可用的任何主要文本编辑器创建新文件。确保脚本文件具有 .sh 扩展名。例如,在 nano 文本编辑器中创建名为“test.sh”的测试。

 nano test.sh

第 2 步:定义 Shebang 线

shebang 行定义用于运行 bash 脚本的解释器的路径。这是每个 bash 脚本的第一行,通常写为:

 #!/bin/bash

或者

#!/bin/sh

如果您的脚本需要使用其他解释器,请使用以下语法:

 #!/usr/bin/env <interpreter>

注意:虽然没有必要为您创建的每个 bash 脚本添加注释,但添加注释可以提高代码的整体可读性。使用 octothorpe 符号向脚本添加注释。执行文件时,解释器将忽略所有注释。

第三步:添加命令和代码

现在,您可以使用 bash 组件添加所需的命令和说明,并将所有内容按逻辑组合在一起。假设您需要自动执行将一个目录中的所有 .txt 文件移动到另一个目录的过程。使用以下 bash 脚本将所有 .txt 文件移动到 Linux 系统上的另一个目录。

 #!/bin/bash

# Create a directory to store text files
mkdir -p TextFiles

# Move all .txt files to the TextFiles directory
for file in *.txt
do
    if [ -f "$file" ]; then
        mv "$file" TextFiles/
        echo "Moved: $file to TextFiles/"
    fi
done

echo "File organization complete!"

是不是看起来很复杂?让我们把它分成几个部分:

  • #!/bin/bash是一个 shebang 行,指定脚本在 bash 解释器中运行。
  • # Create a directory to store text files# Move all .txt files to the TextFiles directory
  • mkdir -p TextFiles如果当前目录不存在,则在当前目录中创建一个名为“TextFile”的新目录。
  • for file in *.txt使用 for 循环遍历所有 .txt 文件。
  • 表示do循环的开始
  • if [ -f "$file" ]; then检查当前项目是否是常规文件
    • 如果满足上述条件,则通过mv "$file" TextFiles/将当前文件移动到 TextFiles 目录中。
    • echo "Moved: $file to TextFiles/"在控制台上打印一条消息,指示文件已移至 TextFiles 目录
  • fi ,表示 if 块在当前迭代中已完成执行。
  • done ,表示 for 循环块已经执行完毕。
  • 移动所有 txt 文件后,控制台上会显示最终消息echo "File organization complete!"

第 4 步:保存脚本

使用完 bash 脚本后,保存文件并退出编辑器。

第 5 步:使文件可执行

一般来说,并非所有脚本文件都可以由 Linux 上的所有类型的用户运行。要使 bash 脚本可执行,请使用以下命令:

 chmod +x <filename>

例如,要使文件 test.sh 可执行:

 chmod +x test.sh

第 6 步:运行文件

使 bash 脚本可执行后,使用以下语法运行该文件:

 ./<filename>

运行 test.sh 文件:

 ./test.sh 

什么是 Bash 脚本以及如何在 Linux 上编写它们?
什么是 Bash 脚本以及如何在 Linux 上编写它们?

假设您有一系列需要重复多次的 Linux 命令。您可以将命令编写一千遍并诅咒自己的命运,也可以在 Linux 上编写一个小而简单的 bash 脚本来自动执行这项繁琐的任务。本文介绍了什么是 bash 脚本、它们的优点以及如何在 Linux 上编写 bash 脚本。

什么是 Bash 脚本以及如何在 Linux 上编写它们?
什么是 Bash 脚本以及如何在 Linux 上编写它们?

Linux 上的 Bash 脚本是什么

就像电影剧本让演员知道如何表演特定场景一样。类似地,Bash 脚本是一个包含一系列 Linux 命令的文件,这些命令在运行时就像在 shell 提示符中键入一样,从而实现工作流程的自动化。所有 bash 脚本都有 .sh 扩展名、“shebang 行” – #/bin/bash ,并且可以通过 shell 提示符直接运行。

换句话说,bash 脚本将特定任务需要单独运行的所有命令组合在一起。现在您已经知道 Linux 上的 bash 脚本是什么了,让我们来看看它的好处。

什么是 Bash 脚本以及如何在 Linux 上编写它们?
什么是 Bash 脚本以及如何在 Linux 上编写它们?

在 Linux 上使用 Bash 脚本的优点

一般来说,Bash 脚本是一种功能强大且多功能的工具,已成为每个系统管理员、开发人员和高级用户的重要组成部分。使用 bash 脚本的主要优点是:

  • 自动化:这可能是使用 bash 脚本最受欢迎的好处。 Bash 脚本允许您自动执行最繁琐和重复性的任务,从而减少工作量、节省时间并最大限度地减少错误。
  • 灵活性:您可以创建自定义 bash 脚本来满足您的需求。您还可以集成外部应用程序和脚本以进一步简化您的工作流程。
  • 可移植性:您可以编写 bash 脚本来执行特定任务,并且只要系统上安装了所需的依赖项,bash 脚本就可以在任何 Linux 发行版上运行。 Bash 脚本还可以在其他类 Unix 系统(例如 macOS)上使用,也可以通过 WSL 在 Windows 上使用。
  • 集成:Bash 脚本可以与其他工具集成,例如数据库、API,甚至其他 bash 脚本,使用户能够充分利用第三方工具的潜力来完成复杂的任务。
  • 易于编写:由于 Linux 用户已经熟悉的简单语法,Bash 脚本非常容易编写。您不需要任何特殊的工具或软件来创建 bash 脚本。这使您可以快速制作想法和新工具的原型。
  • 低学习曲线:Bash 脚本的学习曲线相对较低,使其成为初学者和经验丰富的用户的理想选择。
什么是 Bash 脚本以及如何在 Linux 上编写它们?
什么是 Bash 脚本以及如何在 Linux 上编写它们?

Linux 的基本 Bash 脚本组件

如果环顾四周,几乎所有 bash 脚本都是由一些充当构建块的常见和基本组件组成。这些块为整个脚本添加了功能结构。

1. 舍邦 (#!)

所有 bash 脚本都以“shebang 行”开头,指定要使用的 Linux 解释器的路径。写法如下:

 #!/bin/bash

2.Bash脚本注释

即使注释在运行 bash 脚本时被解释器简单地忽略。这些仅用于向用户提供有关代码的附加信息。它还提高了整体代码的可读性。要注释 bash 脚本,只需在行首添加一个八角形 (#) 即可。

例如:

 # This is a comment line

3. 变量

bash 脚本中的变量对于在内存中临时存储不同类型的数据非常有用。要为 bash 脚本中的变量赋值,请使用以下语法:

 <variable_name>=<value_to_store>

例如,要将“John”存储在变量“name”中:

 name="John"

要访问存储在“name”变量中的值,只需在其前面添加“$”符号即可。

 echo "Hello, $name"

这里,存储在“name”变量中的值被插入到 echo 语句中,最终输出打印如下:

 Hello, John

4.回显命令

echo 命令是一个简单但有用的命令,用于将值显示为输出。使用 echo 命令打印的语法是:

 echo <value_to_print>

5. Bash 脚本中的 If-Else

根据不同的情况,您可能需要做出情境决定。在 bash 中,您可以使用ifthenelse命令通过以下语法做出不同的决定:

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

以下是可用于 bash 中的条件脚本的不同字符集。

字符集解释
&&逻辑产品。用于比较两个条件,仅当两个条件都满足时才返回 true。
-eq等于;用于检查两个值是否相等
-嘿不等于;检查一个值是否不等于另一个值
-lt小于;用于检查第一个值是否小于第二个值
-gt大于;检查第一个值是否大于第二个值
-le小于或等于;检查第一个值是否小于或等于第二个值
-ge大于或等于;检查第一个值是否大于或等于第二个值

例如,检查变量中的两个值是否相等:

 if [ $a -eq $b ]
then
    echo "Equal"
else
    echo "Not Equal"
fi

6. 循环

当一系列语句或命令需要重复多次时,使用循环。在 bash 脚本中,您可以根据循环需要使用“for 循环”或“while 循环”。

For循环

“For 循环”是一种循环结构,当您确切地知道一组语句需要重复或用于遍历列表多少次时使用。在 Linux bash 脚本中使用 for 循环的语法是:

 for <loop_variable> in <sequence>
do
    # commands to be executed for each item in the <sequence>
done

以下是上述语法的细分:

  • <loop_variable>指向一个临时变量,该变量在每次迭代期间保存 <sequence> 的每一项。您可以为 <loop_variable> 选择任何名称。
  • <sequence>包含 for 循环迭代的项目。您可以指定 <sequence>,如下所示:
    • 数字范围:一系列均匀分布的数字。您可以使用以下语法生成范围:“{<start_number> .. <结束号码> }”。
    • 项目列表:您可以指定由空格分隔的显式项目列表,例如item1 item2 item3
    • 命令输出:命令的输出也可以使用$(<command>)等语法用作 <sequence> 。
  • do标记包含需要重复执行的语句的循环体的开始。
  • “done”表示循环结束。

例如,要打印 1 到 5 之间的所有整数:

 for i in {1..5}
do
    echo "Number: $i"
done

While 循环

通常,当您不确切知道一组特定语句需要重复多少次时,会使用 while 循环。重复语句直到满足特定的设定条件。使用 while 循环的语法是:

 while [ <test_condition> ]
do
    # commands to be executed while the condition is true
done

上面的语法看起来像这样:

  • <test_condition>指的是在每次迭代之前测试是否满足的条件。如果不再满足条件,则循环退出而不进入循环体。
  • do标记包含需要重复执行的语句的循环体的开始。
  • “done”表示循环结束。

例如,要打印 1 到 5 之间的所有整数:

 i=1
while [ $i -le 5 ]
do
    echo "$i"
    i=$((i + 1))
done
什么是 Bash 脚本以及如何在 Linux 上编写它们?
什么是 Bash 脚本以及如何在 Linux 上编写它们?

如何在 Linux 上编写 Bash 脚本

现在您已经了解了 Linux 上 bash 脚本的基本构建块,让我们继续讨论如何为 Linux 系统编写 bash 脚本。

第 1 步:创建一个新文件

您可以使用 Linux 上可用的任何主要文本编辑器创建新文件。确保脚本文件具有 .sh 扩展名。例如,在 nano 文本编辑器中创建名为“test.sh”的测试。

 nano test.sh

第 2 步:定义 Shebang 线

shebang 行定义用于运行 bash 脚本的解释器的路径。这是每个 bash 脚本的第一行,通常写为:

 #!/bin/bash

或者

#!/bin/sh

如果您的脚本需要使用其他解释器,请使用以下语法:

 #!/usr/bin/env <interpreter>

注意:虽然没有必要为您创建的每个 bash 脚本添加注释,但添加注释可以提高代码的整体可读性。使用 octothorpe 符号向脚本添加注释。执行文件时,解释器将忽略所有注释。

第三步:添加命令和代码

现在,您可以使用 bash 组件添加所需的命令和说明,并将所有内容按逻辑组合在一起。假设您需要自动执行将一个目录中的所有 .txt 文件移动到另一个目录的过程。使用以下 bash 脚本将所有 .txt 文件移动到 Linux 系统上的另一个目录。

 #!/bin/bash

# Create a directory to store text files
mkdir -p TextFiles

# Move all .txt files to the TextFiles directory
for file in *.txt
do
    if [ -f "$file" ]; then
        mv "$file" TextFiles/
        echo "Moved: $file to TextFiles/"
    fi
done

echo "File organization complete!"

是不是看起来很复杂?让我们把它分成几个部分:

  • #!/bin/bash是一个 shebang 行,指定脚本在 bash 解释器中运行。
  • # Create a directory to store text files# Move all .txt files to the TextFiles directory
  • mkdir -p TextFiles如果当前目录不存在,则在当前目录中创建一个名为“TextFile”的新目录。
  • for file in *.txt使用 for 循环遍历所有 .txt 文件。
  • 表示do循环的开始
  • if [ -f "$file" ]; then检查当前项目是否是常规文件
    • 如果满足上述条件,则通过mv "$file" TextFiles/将当前文件移动到 TextFiles 目录中。
    • echo "Moved: $file to TextFiles/"在控制台上打印一条消息,指示文件已移至 TextFiles 目录
  • fi ,表示 if 块在当前迭代中已完成执行。
  • done ,表示 for 循环块已经执行完毕。
  • 移动所有 txt 文件后,控制台上会显示最终消息echo "File organization complete!"

第 4 步:保存脚本

使用完 bash 脚本后,保存文件并退出编辑器。

第 5 步:使文件可执行

一般来说,并非所有脚本文件都可以由 Linux 上的所有类型的用户运行。要使 bash 脚本可执行,请使用以下命令:

 chmod +x <filename>

例如,要使文件 test.sh 可执行:

 chmod +x test.sh

第 6 步:运行文件

使 bash 脚本可执行后,使用以下语法运行该文件:

 ./<filename>

运行 test.sh 文件:

 ./test.sh 

什么是 Bash 脚本以及如何在 Linux 上编写它们?
什么是 Bash 脚本以及如何在 Linux 上编写它们?