让我们进入今天的学习吧!
💪Keep trying💪
一、shell概述
1.1 什么是shell?
Linux内核与用户之间交互的解释器程序。直白点说就是人和Linux之间语言的翻译官,Linux听不懂人话,但能听懂shell说的话。
- shell解释器有很多,常用的是 /bin/bash
2.2 shell的使用方法
- 交互式——命令行
也就是在终端通过命令行的方式对Linux系统进行管理
特点:人工干预,智能化程度高;但是需要逐条去解释,效率低下,不能解放运维人员的双手 - 非交互式——脚本
特点:需要提前对整个结构进行设计,智能化难度大;批量执行效率高,方便在后台悄悄运行
3.3 bash解释器的特性
- 支持快捷键、tab补全、历史命令、别名、标准输入输出、重定向、管道等操作
2.1 什么是shell脚本?
- 提前规划并写好的可执行语句,能够完成特定的任务的可执行文件
- 特点:按顺序,批量进行处理
- 常见的脚本语言:bash shell、Python、prel、Ruby、PHP
2.2 脚本的构成及执行
- 规范化脚本
#!:声明脚本使用的解释器
#:对脚本进行注释
可执行的shell语句
- 脚本的执行方法
- 给脚本文件添加
可执行(x)权限
,使用绝对路径去执行 bash 脚本文件
source 脚本文件
- 这里需要注意一下,x权限、bash 和 source 执行脚本的一个区别。使用x权限和吧bash执行脚本,bash解释器本身会再生成一个bash子进程去执行脚本,在脚本执行完之后这个子进程就会消亡;而source执行脚本时,是调用原本的这个bash去执行脚本,执行完脚本后不会消亡。【这种区别可能会造成局部变量的影响,因为全局变量是基于当前】,工作中一般都会使用x权限的形式执行脚本。
来看下面这个例子,你就能很清晰的发现这俩到底有啥区别,编写一个很简单的脚本
#!/bin/bash
a=100
我们用上面两种不同的方法来执行一下这个脚本
可以很清楚的看到,用bash执行的脚本,在脚本结束后,a这个变量就跟这bash子进程一起消亡了,而source就不会。
#!/bin/bash
mkdir /abc
mount /dev/cdrom /abc
rm -rf /etc/yum.repos.d/*.repo
echo "[abc]
name=abcabc
baseurl=file:///abc
enabled=1
gpgcheck=0" > /etc/yum.repos.d/abc.repo
三、shell变量
3.1 变量的设置和取消
-
注意:变量只能由数字、字母、和下划线组成,并且不能以数字开头,变量赋值时,等号两边不能有空格。
-
自定义变量
格式:变量名=值,如:a=100
第一次为变量声明,第二次就是重新赋值
-
查看变量
格式:$变量名
-
取消变量
格式:变量名=空 或者 unset 变量名
3.2 环境变量
3.3 预定义变量
- 用来保存脚本程序的执行信息,配合脚本使用,直接使用即可,不要赋值
- $*:执行脚本时后面所有位置参数
- $#:执行脚本时后面位置参数的个数
- $$:当前程序的进程号(该号码是随机的)
- $?:判断上一条指令是否执行成功,0是成功,非0是失败
- $0:当前所在的进程或者脚本名字
3.4 位置变量
- 在命令行执行脚本时,脚本后面所跟的参数
- $1:执行脚本时,脚本后面所跟的第一个参数
- $2:执行脚本时,脚本后面所跟的第二个参数
- $3:执行脚本时,脚本后面所跟的第三个参数)
- …
3.5 变量的作用范围
- 局部变量:新定义的变量只在当前的shell环境(bash进程)中有效
- 全局变量:新定义的变量在当前的shell及子shell中都有效(对父shell无效)
发布全部变量:export 变量名
取消全局变量: export -n 变量名
四、shell的其他语法
4.1 三种定界符
- 双引号:可正常调用引号里面的变量
- 单引号:
屏蔽特殊符号的功能
,全部当做字符串进行输出 - 反撇号:获取命令的执行结果,等同于 $(命令)
4.2 read 标准输入输出
- read:从键盘读入变量的值再进行赋值
格式:read [-p "提示信息" -t 超时时间] 变量名
注意:-t选项可以指定超时时间,单位为秒,如果超过这个时间还没输入值,那么程序就会直接退出。
看下面这个脚本
#!/bin/bash
read -p "请输出用户名: " username
read -p "请输入密码: " -t 10 password
echo $username
echo $password
执行结果为:
4.3 终端显示控制
关闭终端输出:stty -echo
开启终端输出:stty -echo
五、数值运算
5.1 expr 运算工具
- 计算指定的表达式并输出计算结果(
只能对整数进行运算
) - 格式:expr 整数1 运算符 整数2
- 运算符:+ - * / %
注意:做乘法运算是乘号要用单引号引起来或者用\进行转义
5.2 $[] 和 $(()) 运算
- 格式:直接将算式写在括号里面即可
- 注意:
计算完之后不会输出结果,因为式子本身就是结果,需要输出就echo 而且,运算变量的话,不需要再加$号了。
5.3 let 运算符
- 用于变量的创建及自增自减
- 创建:
- 自增:
5.4 使用 bc 实现小数运算
- 命令行执行指令 bc 可以进入交互式计算器,quit 退出
- 非交互式使用
scale可以定义结果的小数位数。
👆回到顶部👆