阶段八:shell脚本之基础语法
一、Shell基础知识
Shell概述
Shell是一个命令解释器,系统的"命令翻译官",负责解释和执行用户输入的命令或程序。工作方式分为:
- 交互式:输入一条命令,立即执行一条(如终端操作)。
- 非交互式:通过脚本批量执行命令(如
.sh文件)。
核心功能
- 接收用户输入 → 传递给系统内核 → 返回结果到屏幕。
- 用户登录Linux后,所有操作都通过Shell处理。

Shell脚本
把多个命令写入一个文件,让系统自动按顺序执行,就组成了Shell脚本。
Shell脚本是批量命令的集合,让系统自动完成重复任务。类似Windows的.bat批处理文件,但更强大。
应用场景
1、简化传统运维流程
2、编写日常巡检脚本
3、软件安装配置流程化
4、方便进行日志分析与处理 => 软件日志 => 系统日志/var/log
案例:输出日志
#!/bin/bash
cd /var/log
cat /dev/null > messages
echo "Log cleaned up."命令作用:
- 读取并输出
/dev/null、>、messages的内容;使用>重定向时,输出会写入目标文件。
- 把命令后的文本或变量展开结果写到标准输出;配合
>或>>时会改为写入文件,前者覆盖、后者追加。
执行结果:
- 成功后会输出指定文件内容;文件不存在或权限不足时会报错。
- 成功后文本或变量展开结果会输出到终端;带重定向时会写入目标文件。
关键参数:
注意事项:
**关键参数:**
**注意事项:**
变量核心作用?存储数据
变量有三句话:
1、变量存储数据的容器
2、变量中存储的数据是临时的
3、变量中存储的数据可以发生变化
1、变量名称只能由**字母、数字或下划线**组成
2、不能以**数字**开头
3、严格**区分大小写**
判断题:
1、变量的命名规则
2、建议使用英文单词或者拼音作为变量名称
变量可以分为两大类:**环境变量(全局变量)**和**普通变量(局部变量)**;
环境变量也可称为全局变量,可以在创建它们的Shell及其派生出来的任意子进程Shell中使用。
环境变量又可以分为bash内置的环境变量、自定义环境变量。
普通变量也可以称为局部变量,只能在创建它们的Shell函数或Shell脚本中使用。
普通变量一般由开发者在开发脚本程序时创建。
Java程序运行过程中,可以通过环境变量自动寻找JDK相关信息,方便程序运行注意事项:
环境变量对所有进程有效;
在命令行中定义的环境变量只在当前会话中有效,一旦退出,变量就会消失;
按照系统规范,所有环境变量的名字均采用大写形式。
在将环境变量应用于用户进程程序之前,都应该用export命令导出定义。
有一些环境变量,比如 HOME(用户家目录)、 PATH(命令搜索路径)、 USER(用户名)、 PWD(当前工作目录) 等,这些变量在用户登录时由系统自动设置。
**注意事项:**
比如,
或者先赋值,再导出
JAVA_VERSION="11.0.2"
等价于关键参数:
注意事项:
注意事项:
用env(printenv)显示默认环境变量:用set也可以显示环境变量(包括局部变量):
显示环境变量注意事项:
用unset消除本地变量和环境变量
**注意事项:**
在Shell脚本编程中,变量一共分为(环境变量)和(普通变量/局部变量)?
环境变量在定义时,建议变量名称(全大写)
配置环境变量时,如果在命名行通过export定义,是临时的还是永久的?临时的
如果想配置为永久,可以放置在哪些文件?(`/etc/profile`、`/etc/bashrc`、`~/.bash_profile`或`~/.bashrc`)
/etc/profile、/etc/bashrc、~/.bash_profile、~/.bashrc这些文件可统称为系统环境文件。bash检查的环境变量文件的情况取决于系统运行Shell的方式。
系统运行Shell的方式一般有3种:
1、通过系统用户登录后默认运行的Shell(/bin/bash)
3、执行脚本运行非交互式Shell
当用户登录Linux系统时,Shell会作为登录Shell启动。
此时登录Shell加载环境变量顺序:

用户登录系统后首先会加载/etc/profile全局环境变量文件,这是Linux系统上默认的Shell主环境变量文件。系统上每个用户登录都会加载这个文件。
小结:
中午留一个小作业:把MySQL安装封装成一个Shell脚本
要求1:能自动安装MySQL软件
要求2:把随机密码放入/root/mysql_pass.txt文件中
第一种方式是在/etc/motd里增加提示的字符串,如下:
**注意事项:**注意事项:
在定义文本(字符串)时,单引号和双引号效果一致的,但是如果定义的文本内容中存在变量时。两者有所不同:
变量定义时,变量的内容可以用单引号或双引号引起来,也可以不加引号。
a=192.168.88.100 b='192.168.88.100' c="192.168.88.100"
**注意事项:**
a=192.168.88.200
b='192.168.88.200'
c="192.168.88.200"
a=192.168.88.100-$a
b='192.168.88.100-$b'
c="192.168.88.100-$c"注意事项:
把一个命令的结果作为变量的内容赋值的方法
对需要获取命令结果的变量内容赋值的常见方法有两种:
案例演示:
CMD1=`ls`注意事项:
CMD2=$(pwd)
**注意事项:**
%F:年-月-日
%Y-%m-%d:年-月-日注意事项:
在Shell中存在一些特殊且重要的变量,例如\$0、\$1、\$#,我们称之为特殊位置参数变量。要从命令行、函数或脚本执行等处传递参数时,就需要在Shell脚本中使用位置参数变量。
案例演示:
#!/bin/bash
**注意事项:**
#!/bin/bash
注意事项:
算术运算:默认情况下,Shell就只能支持简单的整数运算
案例:注意事项:
i=1
**注意事项:**
j=1注意事项:
i=1;j=1
Shell运算符是否能实现小数运算呢?答:默认不可以,但是可以结合bc命令实现。
2.5注意事项:
**注意事项:**