Shell 脚本0基础教学(一)

从这篇文章开始为大家介绍 Shell 脚本。

前言

通过Shell 命令或程序编程语言编写的 Shell 文本文件,就是 Shell 脚本,也叫 Shell 程序。
通过 Shell 命令与编程语言来提高 linux 系统的管理工作效率。


一、Shell 解析器

  1. Shell 的运行过程

当用户下达指令给操作系统的时候,实际是把指令shell ,经过 shell 的解释,处理后让内核做出相应的动作。系统的回应和输出信息也由 shell 处理,然后显示在用户的屏幕上。

在这里插入图片描述
2. Shell 解析器:

查看 linux 系统 centos 支持的 shell 解析器:

cat /etc/shells

效果:
在这里插入图片描述

shell 解析器类型:最常用的是 /bin/bash 解析器。
在这里插入图片描述

  1. Linux 系统 默认的解析器是 bash

查看当前系统环境使用的 Shell 解析器类型:

echo $SHELL

echo :用于打印输出数据到终端。
$SHELL :是全局共享的读取解析器类型的环境变量,所有的 Shell 程序都可以读取的变量。

效果:
在这里插入图片描述


二、Shell 脚本介绍

1. 脚本规范

(1). 脚本文件后缀名: .sh。
shell 脚本文件就是一个文本文件,后缀名建议使用 .sh 结尾。

(2). 首行格式规范:

#!/bin/bash

表面当前的 shell 脚本文件采用 bash 解析器运行脚本代码。

(3). 注释

  • 单行注释:
# 注释内容
  • 多行注释:
<<!
# 注释内容1
# 注释内容2

实例:
在这里插入图片描述

2. 脚本文件执行方式

1)sh 解析器执行方式:
使用 sh 命令执行脚本文件,本质就是使用 shell 解析器运行脚本文件。

sh 脚本文件

2)bash 解析器执行方式:
使用 bash 命令执行脚本文件,本质就是使用 shell 解析器运行脚本文件。

bash 脚本文件

3)仅路径执行方式:
步骤一:设置可执行权限

chmod a+x 脚本文件

步骤二:执行脚本文件

./脚本文件

实例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

PS : sh 或者 bash 执行脚本文件的方式是直接使用 Shell 解析器运行脚本文件,不需要可执行权限。而 仅路径方式是执行脚本文件自己,需要可执行权限。

3. 多命令处理

就是在 Shell 脚本文件中编写多个Shell 命令。

例子需求:已知目录 /home/book/my_work ,执行脚本 my.sh。脚本需实现 /home/book/my_work/ 目录下创建一个 one.txt 文件,并在文件one.txt文件中增加 “hello world” 内容。

步骤分析:

编辑脚本文件
1)命令1 : touch 创建文件, 文件名 one.txt
2)命令2 : 输出数据 “HelloShell” 到 one.txt 文件中

输出数据到文件中的命令:

数据 >> 文件

实例:
my.sh 脚本文件内容:
在这里插入图片描述
效果:
在这里插入图片描述


三、Shell 变量

Shell 变量用于存储管理临时的数据,这些数据都是在运行内存中的。

变量的类型:

  • 系统环境变量
  • 自定义变量
  • 特殊符号变量

1. 系统环境变量

系统环境变量是 系统提供的共享变量,是 linux 系统加载 Shell 的配置文件 中定义的变量,共享给所有的 Shell 程序使用。

Shell 的配置文件分类: 一般情况下,我们都是直接针对全局配置进行操作。

1)全局配置文件

/etc/profile
/etc/profile.d/*.sh
/etc/bashrd

2) 个人配置文件

当前用户/.bash_profile
当前用户/.bashrc

环境变量分类

在Linux系统中,环境变量按照其作用范围不同大致可以分为系统级环境变量和用户级环境变量。

1)系统级环境变量:Shell 环境加载全局配置文件中的变量共享给所有用户所有Shell程序使用,全局共享
2)用户级环境变量:Shell 环境加载个人配置文件中的变量共享给当前用户的Shell程序使用,登录用户使用

查看当前 Shell 系统环境变量

env

在这里插入图片描述

查看 Shell 变量(系统环境变量 + 自定义变量 + 函数):

set

在这里插入图片描述

常见系统环境变量:

在这里插入图片描述

2. 自定义变量

就是自己定义的变量。

分类:

  • 自定义的局部变量。
  • 自定义常量。
  • 自定义的全局变量。

1) 自定义局部变量
定义在一个脚本文件在的变量,只能在这个脚本文件中使用该变量。

①定义:

var_name=value
变量定义规则 :
1.变量名称可以有字母,数字和下划线组成,但是不能以数字开头
2.等号两侧不能有空格
3.在bash环境中,变量的默认类型都是字符串类型,无法直接进行数值运算
4.变量的值如果有空格,必须使用双引号括起来
5.不能使用Shell的关键字作为变量名称

②查询:
区别:花括号方式适合拼接字符串

# 语法1: 直接使用变量名查询
$var_name

# 语法2:使用花括号
${var_name}

③删除:

unset var_name

实例:
在这里插入图片描述

2)自定义常量
即变量设置值后不可以修改的变量叫常量,也叫只读变量。

readonly var_name

实例:
在这里插入图片描述

PS: 删除只读变量(常量):关闭当前 Shell 或子 Shell(退出终端或脚本)。

3)自定义全局变量
在当前脚本文件中定义全局变量,这个全局变量可以在当前 Shell 环境 与 子 Shell 环境都可以使用

PS : 父子 Shell 环境介绍。
例如:有 2 个Shell 脚本文件 a.sh 和 b.sh。如果在 a.sh 脚本文件中执行 b.sh 脚本文件,那么 a.sh 就是父 Shell 环境, b.sh 就是子 Shell 环境。
export var1 var2

实例 :

要求 :测试全局变量在子Shell中是否可用,在父Shell中是否可用。

案例实现步骤:
1. 创建2个脚本文件demo1.sh和demo2.sh
2. 编辑demo1.sh
命令1:定义全局变量var1
命令2:执行demo2.sh脚本文件
3.编辑demo2.sh
输出全局变量var1
4. 执行demo1.sh脚本文件

效果:
在这里插入图片描述

3. 特殊符号变量

  1. $n
    用于接收脚本文件执行时传入的参数
$n
- $0 用于获取当前脚本文件名称
- $1~$9,代表获取第一输入参数到第9个输入参数
- 第 10 个以上的输入参数获取参数的格式:${数字}

执行脚本文件并传入参数语法:

sh 脚本文件 输入参数1  输入参数2....

实例:
在这里插入图片描述

  1. $#
    获取所有输入参数的个数
$#

实例:
在这里插入图片描述

  1. $* , $@
    用于获取所有的输入参数
$*
$@

$ * 与 $@区别 :

1. 不使用双引号括起来,功能一样:
$* 和 $@ 获取所有输入参数,格式为:$1 $2 ... $n.

2. 使用双引号括起来:
"$*" 获取的所有参数拼接为一个字符串,格式为:"$1 $2 . .$n"。
"$@" 获取一组参数列表对象,格式为:"$1" "$2" "$n"

使用循环打印 (for) 所有输入参数可以看出区别。

实例:
在这里插入图片描述

循环语法:

for var in 列表变量
do 						# 循环开始
	命令				# 循环体
done					# 循环结束

实例:
在这里插入图片描述
4) $?
用于获取 上一个 Shell 命令的退出状态码,或者是函数的返回值。
PS : Shell 命令的执行都会有一个返回值,这个返回值用于说明命令执行是否成功。返回0:执行成功。返回1:执行失败。

$?

实例:
在这里插入图片描述

  1. $$
    用于获取当前Shell 环境的进程 ID 号。
$$

实例:
在这里插入图片描述


总结

下一篇文章继续为大家介绍 Shell 脚本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

糖果罐子♡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值