提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
一、shell脚本概述
1.什么是shell?
Shell是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。
2.shell脚本的作用
(1)自动化运维
(2)批量化重复操作可以编写脚本结合计划任务自动周期运行
(3)轻管理员工作量
(4)提高处理文本文件的速度
(5)避免配置出错
3.shell脚本语言
shell脚本语言也叫动态语言,也是编程语言的一种,用来控制软件应用程序。脚本通常以文本形式保存,只在被调动的时候才进行解释和编译。
4.shell脚本应用场景
1.重复性操作
2.交互性任务
3.批量事务处理
4.服务运行状态监控
5.定时任务执行
二、shell脚本实操
1.编写脚本代码
1.使用vim文本编辑器
2.每执行一条linux命令,按执行顺序依次编写
[root@localhost ~]# vim first.sh
2.shell脚本形式
sh first.sh bash first.sh source first.sh
前三种不需要赋予执行权限,只适用于脚本调试阶段 ./first.sh 一旦正式上线,必须给执行权限运行
3.重定向操作与管道操作
3.1重定向操作
3.2面试题:怎么样不删除文件,清空文件的内容?
3.3管道符 “|”
将左侧的命令输出结果,作为右侧命令的处理对象。
三、shell变量的作用、类型
1.变量的作用
用来存放系统和用户需要使用的特定参数(值)
2.变量名的规范
1、不要使用系统的命令作为变量名
2、不要使用中文
3、不能特殊符号开头 可以用_来开头
4、在指定变量名的时候有一个默认的规则:计算机:computer 学生:student a= b=
5、要有注释,还要注意前后一致
注:整数 int
字符串 string
布尔 真假 0 1
浮点 1.1 2.2
3.变量类型
3.1自定义变量
由用户自己定义、修改和使用
3.1.1只读变量
3.1.2强引用和弱引用
在赋值变量时,单引号和双引号无区别。
在打印变量时——双引号:弱引用还是原来的值
单引用:强引用就不再是原来的值,变成$b,变成字符串
反撇号:提取命令的执行结果,然后再给变量赋值
3.1.3read命令作为输入的变量
read -p “输入一个值:” num
vim test.sh
4.全局变量
所有用户自定义变量在所有的子shell环境中都可以使用。
临时定义全局变量
永久定义全局变量
4.1全局变量的优点
1.全局范围
2.持久
3.共享
副作用:如果相同变量名,直接引用全局变量,会导致不确定性。
在脚本中一般使用自定义变量
expr 1 + 2
expr 2 - 1
expr 2 * 2
expr 2 / 2
expr 2 % 2 取余
乘法
取余
i++ for i=1 i<=10 先赋值再加一
i-- 先赋值再减一
++i 先加再赋值
bc计算器:既可以支持整数,也可以浮点
scale:内部自带的全局变量,定义小数点后几位
5.环境变量
作用:系统自带,用于设置工作环境,配置系统行为、传递信息、控制程序的执行。
这些环境变量,所有用户都可用、可见。
常见的环境变量:
$USER 表示用户名称
$HOME 表示用户的宿主目录
$LANG 表示语言和字符集
$PWD 表示当前所在工作目录
$PATH 表示可执行用户程序的默认路径
6.位置变量
定义:也称为命令行参数,是在运行脚本或程序时传递给它们的值。位置变量用于将外部数据传递给脚本或程序,以便根据需要进行处理。
$ n 传参顺序,从左到右 n为数字,$ 0代表命令本身,$ 1-$ 9代表带一个到第九个参数,十以上的参数需要使用大括号表示,比如第十个参数为$ {10}
7.预定义变量
通常由编程语言或脚本解释器提供,并根据需要自动设置和更新,不能修改。
$ *、$@:表示命令或脚本要处理的参数。
$0:表示当前执行的脚本或命令的名称。
$#:表示命令或脚本要处理的参数的个数。
$ *加双引号
$ *不加双引号
$ @加双引号
$?:表示前一条命令或脚本执行后的返回状态码,返回值为0表示执行正确,返回任何非0值均表示执行出现异常。也常被用于Shell脚本中return退出函数并返回的退出值。