自学内容网 自学内容网

shell脚本_创建执行与变量的定义与使用

PS:前言本章节讲解使用的系统为linux2024.1,基于Debian的Linux发行版。

一、什么是shell脚本?

1. 定义:

2. 主要特点:

3. shell脚本的基本结构

4. Shebang

二、创建执行

1.脚本的创建

2. 脚本的执行

2.1.chmod

2.2. 使用脚本解释器直接运行脚本

2.3.source

3. 解释器

三、变量的定义与使用

1. 定义变量

2. 引用变量

3. set 命令查看变量

4. 通过grep来筛选内容

命令解释

5.删除变量

结语


学习视频泷羽sec:

shell脚本(1)脚本创建执行与变量使用_哔哩哔哩_bilibiliicon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1P6UKYDEAs?spm_id_from=333.788.videopod.sections&vd_source=0e1eb78c133fc5f90cf3666ebd4c1a64


一、什么是shell脚本?

Shell脚本是一个由一系列Shell命令、控制结构和逻辑语句组成的脚本文件,用于在类Unix操作系统中自动化执行一系列任务。它通过Shell(如Bash、Zsh、Sh等)解释执行,通常用于系统管理、文件操作、批处理任务以及自动化工作流等场景。

1. 定义:

Shell脚本是一个包含多个命令和程序逻辑的文本文件,通过Shell(命令行解释器)解释执行,旨在自动化或简化日常任务。

2. 主要特点:

  1. 命令自动化:Shell脚本可以将多个Shell命令组合成一个自动化脚本,避免手动输入命令。

  2. 文本文件:脚本本质上是一个文本文件,可以使用任何文本编辑器(如Vim、Nano、VS Code等)编辑。

  3. 解释执行:Shell脚本并不需要事先编译,它由Shell解释器直接执行,通常通过命令行终端运行。

  4. 系统管理与自动化:常用于自动化系统管理任务(如备份、文件处理、日志分析等)以及批处理操作。

3. shell脚本的基本结构

  • Shebang:指定解释器。

  • 注释:描述脚本功能或解释代码。

  • 命令:实现脚本功能的核心部分。

  • 变量:存储和操作数据。

  • 控制结构:如条件判断和循环,控制程序流。

  • 函数:组织代码,提升可复用性。

  • 输入输出:与用户交互并处理数据。

  • 退出状态:通过状态码反馈执行结果。

4. Shebang

Shebang是Shell脚本的第一行,用于指定脚本应由哪个解释器执行。在Linux和Unix系统中,Shebang通常以 #! 开头,后面跟着解释器的路径。

  • 示例:#!/bin/bash

    这行指示系统使用 /bin/bash 作为解释器来执行这个脚本。

  • 常见Shebang

    • #!/bin/bash:使用Bash解释器(最常见)

    • #!/bin/sh:使用系统默认Shell(通常是Bash或Dash)

    • #!/usr/bin/env python3:用于Python脚本,指定Python解释器。

接下来的这些章节会开始shell脚本的学习之旅


二、创建执行

1.脚本的创建

  • 可以用touch或者echo命令来创建sh文件

  • 可以使用任何文本编辑器(如 nano, vi, vim, gedit, emacs 等)来创建脚本文件。

2. 脚本的执行

在默认情况下我们创建的脚本是没有权限被执行的。如果不明白看往期章节关于文件的权限部分Linux基础-常用操作命令详讲

这里有两种方案

2.1.chmod

Shell脚本文件本身需要具有“可执行”权限。使用 chmod 命令,你可以赋予脚本文件适当的权限,使得它能够被系统执行。

  • chmod +x script.sh

    • +x 表示给文件添加“执行”权限。

    • script.sh 是你的Shell脚本文件名。

2.2. 使用脚本解释器直接运行脚本

如果你的脚本没有执行权限,但你知道它是有效的Shell脚本,你可以直接通过指定解释器,通过它们可以运行脚本内容,无论脚本本身是否有执行权限。

  • /bin/bash script.sh # 使用 Bash 解释器执行脚本

  • /bin/sh script.sh # 使用默认的 Bourne shell 执行脚本

  • /bin/dash script.sh # 使用 Dash shell 执行脚本

这三种其实不管用哪种脚本解释器最后调用的还是dash。

2.3.source

  • source 命令会读取并执行一个文件中的内容,所有在该脚本中定义的变量、函数、或者更改的环境设置都会保留在当前 shell 中。

  • source 可以用来重新加载配置文件,或在当前 shell 中运行脚本,保持环境的连续性。

  • 它和sh的区别是存在颜色加深,会显示如原本命令的目录颜色、文件颜色。

  • source script.sh

3. 解释器

在Linux和类Unix系统中,解释器(Interpreter)是一个将脚本文件(例如Shell脚本)中的代码逐行翻译并执行的程序。 /bin/bash/bin/sh/bin/dash 都是不同的Shell解释器。

解释器的作用是将脚本中的命令逐行解析并执行,因此即使脚本文件本身没有执行权限,只要你指定了合适的解释器,它就能执行。

  • 解释器:负责逐行解析并执行脚本文件中的命令。常见的解释器有 /bin/bash/bin/sh/bin/dash

  • 直接执行脚本:通过指定解释器(即使文件没有执行权限),你可以运行脚本。系统会通过该解释器来执行脚本内容。

  • /bin/sh/bin/dash/bin/sh 是一个符号链接,可能指向 Dash 或其他Shell,这决定了脚本的执行环境。


三、变量的定义与使用

在 Shell 脚本中,变量的定义与使用非常简单,但需要注意 Shell 的语法规则。以下是 Shell 脚本中变量定义和使用的基本知识:

1. 定义变量

Shell 中定义变量时,变量名和等号之间不能有空格。例如:

variable_name=value

注意:

  • 变量名只能由字母、数字和下划线组成,且不能以数字开头。

  • 变量定义时不需要使用 = 以外的符号。

2. 引用变量

在使用变量时,需要通过 $ 符号来引用它的值。例如:

echo $name
echo $age

如果需要在变量引用中包含更多文本或者字符,可以使用花括号 {} 来确保正确的解析。例如:

echo "My name is ${name} and I am ${age} years old."

ps:多变量必须由双引号包裹或不包裹,变量名字写在${}内,单引号就原模原样输出字符串不读取变量。

3. set 命令查看变量

在 Unix-like 系统(如 Linux 或 macOS)中,set 是一个 shell 内置命令,用于列出所有当前 shell 环境中的变量,包括环境变量和局部变量。

  • 列出所有变量: set 命令将显示当前 shell 环境中的所有变量,包括环境变量、局部变量和 shell 特殊变量。

  • 显示的变量包括:

    • 环境变量(通过 export 设置的变量)

    • 局部变量(没有使用 export 设置的变量)

    • shell 特殊变量(如 $?\$0 等)

如果你只输入 set 命令,它将列出当前 shell 环境中的所有变量:

set

输出会非常长,包含许多信息。例如,你可能会看到如下内容包含我们刚才创建的变量:

BASH=/bin/bash
BASH_VERSION='5.0.17(1)-release'
...
MY_VAR='Hello'

4. 通过grep来筛选内容

grep是一个常见的命令,用于查找和筛选包含特定字符串

set | grep name

命令解释

  1. set:该命令列出当前 shell 环境中所有的变量,包括环境变量和局部变量。输出的内容会非常多,包括变量名和它们的值。

  2. |(管道符):这个符号表示将 set 命令的输出传递给下一个命令。在这里,它将 set 输出的结果传递给 grep 命令进行筛选。

  3. grep namegrep 是一个常用的文本搜索工具,它会在输入的内容中查找包含 "name" 的行,并输出匹配的结果。

就会输出我们刚才定义的name和其他包含name的变量

5.删除变量

在 Shell 中,unset 命令用于 删除变量取消函数定义。当你使用 unset 删除一个变量时,这个变量将不再在当前 shell 会话中有效,无法再访问它。

unset name

其中 name 是你想要删除的变量的名称。

  • unset 删除的是当前 shell 环境中的 局部变量环境变量,它不会影响系统或父进程中的其他变量。

  • 一旦变量被 unset 删除,你将无法再访问它,直到它被重新定义。

结语

通过本篇文章的学习,我们对 Shell 脚本有了全面的了解,掌握了从基本概念到实际操作的各个方面。Shell 脚本不仅是一种强大的自动化工具,也是 Linux 和类 Unix 系统管理员日常工作中必不可少的一部分。它允许我们高效地管理系统、执行批量任务、自动化流程,甚至创建复杂的脚本应用。

在本文中,我们探讨了 Shell 脚本的定义与主要特点,学习了如何创建和执行脚本,以及常用命令如 chmodsourceset 的使用。通过对变量的定义与引用、命令解释和变量管理的深入了解,我们为日后的脚本编写奠定了坚实的基础。


原文地址:https://blog.csdn.net/2201_75446043/article/details/143840068

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!