文章目录
一、Shell相关介绍
1.1 定义
- 命令解释器 解释用户输入的命令
# 作用
- 自动安装系统软件和应用
- 自动优化系统和软件
- 自动启动和停止服务
- 日志管理
- 数据分析
- 代码测试
1.2 分类
(1)B shell
- sh
- ksh
- bash
(2)c shell
- csh
- tcsh
#获取系统中所有的shell
[root@web01 ~]#cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
#获取当前系统的shell
[root@web01 ~]#echo $SHELL
/bin/bash
二、shell基础
2.1 创建shell规范
- 存放在统一的目录 方便做自动化管理 先要有规范/server/scripts
- 脚本结尾必须以.sh结尾
- 脚本的开头以#!/bin/sh bash结尾 如果不指定则用默认的shell解释
- 脚本中要有注释
- 脚本中的符号一次性书写完成 必须使用英文,不能使用中文
2.2 执行脚本的四种方法
- 相对路径执行
[root@web01 test]#ll
total 4
-rw-r--r-- 1 root root 31 Apr 27 23:46 test.sh
[root@web01 test]#sh test.sh
hello world
- 以绝对路径执行
[root@web01 test]#pwd
/test
[root@web01 test]#sh /test/test.sh
hello world
- 使用父shell执行
[root@web01 test]#source test.sh #相对路径
hello world
[root@web01 test]#source /test/test.sh #绝对路径
hello world
- 管道后置执行
[root@web01 test]#cat test.sh|bash #相对路径
hello world
[root@web01 test]#cat /test/test.sh|bash #绝对路径
hello world
三、变量
- 环境变量(全局变量) 针对所有的shell生效 国法
- 普通变量(局部变量) 针对当前的Shell生效 家规
3.1 环境变量
(1)开机顺序文件加载顺序
1️⃣./etc/profile
2️⃣.bash_profile,判断中间的.bashrc是否存在,存在即执行,不存在则往下执行
3️⃣.bashrc中是否存在./etc/bashrc是否存在
(2)环境变量的设置与取消
- 定义变量
export 变量 #定义临时变量
加export表示所有窗口生效,不加表示当前窗口生效
将上面的语句写入到/etc/profile文件夹中 #定义永久变量
source /etc/profile
- 查看变量
- echo $变量名称
- 取消变量
- unset $变量名称 取消环境变量
注意:后面执行的会覆盖前面的
- unset $变量名称 取消环境变量
3.2 核心的位置变量
- $0 获取脚本名称
- $n 表示脚本的第n个参数 n为数字
- $# 表示传参的个数,控制传参的个数
- $* 表示传参的所有参数 不加双引号和$@相同 加上双引号 表示为一个参数 脚本中相同,循环体中不同
- $@ 表示传参的所有参数 不加双引号和$*相同 加上双引号,表示为正常的传参
- $? 表示上一条命令执行的结果 0为成功 1为失败 返回值0-255之间 可以自定义返回值
- $$ 表示当前脚本的PID
- $! 获取上一个在后台运行脚本的pid
(2)变量的定义方法
1️⃣变量分类
- 永久的 需要写入/etc/profile
- 临时的 使用export 声明即可
2️⃣变量的定义方式
- 字母 数字 下划线的组合
- 以字母或者下划线开头
- 等号两端不允许有空格
- 名称见其名知其意,不要命令冲突