🍓 简介:java系列技术分享(👉持续更新中…🔥)
🍓 初衷:一起学习、一起进步、坚持不懈
🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏
🍓 希望这篇文章对你有所帮助,欢迎点赞 👍 收藏 ⭐留言 📝
一、简介
-
通过编写Shell命令发送给linux内核去执行, 操作的就是计算机硬件. 所以Shell命令是用户操作计算机硬件的桥梁
-
Shell是命令, 类似于windows系统Dos命令
-
Shell是一个门程序设计语言, Shell里面含有变量, 函数, 逻辑控制语句等等
二、疑问?
1.linux系统是如何操作计算机硬件CPU,内存,磁盘,显示器等?
使用linux的内核操作计算机的硬件
2.Shell脚本是什么?
- 通过Shell命令或程序编程语言编写的Shell文本文件, 这就是Shell脚本 , 也叫Shell程序`
3.为什么学习Shell脚本?
- 通过Shell命令与编程语言来提高linux系统的管理工作效率
4.Shell的运行过程是怎样的呢?
- 当用户下达指令给该操作系统的时候,实际上是把指令告诉shell,经过shell解释,处理后让内核做出相应的动作。 系统的回应和输出的信息也由shell处理,然后显示在用户的屏幕上。
5.查看linux系统支持的shell解析器呢?
cat /etc/shells
1. 示例:
2. 介绍解析器类型
6.Centos默认的解析器是?
echo $SHELL
-
含义: 打印输出当前系统环境使用的Shell解析器类型
-
echo 用于打印输出数据到终端
-
$SHELL
是全局共享的读取解析器类型环境变量, 全局环境变量时所有的Shell程序都可以读取的变量,
三、Shell脚本文件编写规范
1.脚本文件后缀名规范
- shell脚本文件就是一个文本文件, 后缀名建议使用
.sh
结尾
2.首行格式规范
#!/bin/bash
含义: 设置当前shell脚本文件采用bash解析器运行脚本代码
3.注释格式
- 单行注释, 语法
# 注释内容
- 多行注释, 语法
:<<!
# 注释内容1
# 注释内容2
!
4.shell脚本HelloWord入门案例
4.1需求
创建一个Shell脚本文件helloworld.sh,输出hello world字符串
4.1效果
4.3实现步骤
1、创建shell脚本文件
touch helloworld.sh
2、编辑文件
vim helloworld.sh
3、增加shell脚本文件内容如下,并保存退出
#!/bin/bash
echo "hello world"
4、执行脚本
sh helloworld.sh
4、执行脚本
sh helloworld.sh
4.4运行效果
5.脚本文件的常用执行3种方式
5.1介绍
-
sh解析器执行方式
语法:
sh 脚本文件
介绍: 就是利用sh命令执行脚本文件, 本质就是使用Shell解析器运行脚本文件
-
bash解析器执行方式
语法:
bash 脚本文件
介绍: 就是利用bash命令执行脚本文件, 本质就是使用Shell解析器运行脚本文件
-
仅路径执行方式
语法:
./脚本文件
介绍: 执行当前目录下的脚本文件
注意
: 脚本文件自己执行需要具有可执行权限, 否则无法执行
5.2 这3种方式的区别
- sh或bash执行脚本文件方式是直接使用Shell解析器运行脚本文件,
不需要可执行权限
- 仅路径方式是执行脚本文件自己,
需要可执行权限
6.文件权限修改
6.1详细介绍
6.2 示例
设置所有用户对此脚本文件增加可执行性权限
chmod a+x 脚本文件
a 也就是all 的意思
使用数字规则如上图
四、Shell变量
1.Shell变量的介绍
变量用于存储管理临时的数据, 这些数据都是在运行内存中的.
2.变量类型有哪些?
- 系统环境变量
- 自定义变量
- 特殊符号变量
3系统环境变量
是系统提供的共享变量.是linux系统加载Shell的配置文件中定义的变量共享给所有的Shell程序使用
Shell的配置文件分类
1.全局配置文件
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
2.个人配置文件
当前用户/.bash_profile
当前用户/.bashrc
在Linux系统中,环境变量按照其作用范围不同大致可以分为系统级环境变量和用户级环境变量。
系统级环境变量
:Shell环境加载全局配置文件中的变量共享给所有用户所有Shell程序使用, 全局共享
用户级环境变量
:Shell环境加载个人配置文件中的变量共享给当前用户的Shell程序使用, 登录用户使用
查看当前Shell系统环境变量
直接输入env即可
env
查看Shell变量(系统环境变量+自定义变量+函数)
set
常用系统环境变量
变量名称 | 含义 |
---|---|
PATH | 与windows环境变量PATH功能一样,设置命令的搜索路径,以冒号为分割 |
HOME | 当前用户主目录:/root |
SHELL | 当前shell解析器类型:/bin/bash |
HISTFILE | 显示当前用户执行命令的历史列表文件:/root/.bash_history |
PWD | 显示当前所在路径:/root |
OLDPWD | 显示之前的路径 |
HOSTNAME | 显示当前主机名:itheima |
HOSTTYPE | 显示主机的架构,是i386、i686、还是x86、x64等:x86_64 |
LANG | 设置当前系统语言环境:zh_CN.UTF-8 |
演示
可根据上方常用系统环境变量
表格进行联系即可
4. 自定义变量
自定义变量介绍就是自己定义的变量
分类
- 自定义局部变量
- 自定义常量
- 自定义全局变量
自定义局部变量
就是定义在一个脚本文件中的变量, 只能在这个脚本文件中使用的变量, 就是局部变量
定义语法
var_name=value
变量定义规则
变量名称可以有字母,数字和下划线组成, 但是不能以数字开头
等号两侧不能有空格
在bash环境中, 变量的默认类型都是字符串类型, 无法直接进行数值运算
变量的值如果有空格, 必须使用双引号括起来
不能使用Shell的关键字作为变量名称
- 查询变量值语法
# 语法1: 直接使用变量名查询
$var_name
# 语法2: 使用花括号
${var_name}
# 区别: 花括号方式适合拼接字符串
- 变量删除
语法
unset var_name
自定义常量
就是变量设置值以后不可以修改
的变量叫常量, 也叫只读变量
语法
第一种
var_name=张三
readonly var_name
第二种
readonly var_name=张三
自定义全局变量
就是在当前脚本文件中定义全局变量, 这个全局变量可以在当前Shell环境与子Shell环境中都可以使用
export var_name1 var_name2
5.特殊变量
5.1.特殊变量:$n
用于接收脚本文件执行时传入的参数
$0 用于获取当前脚本文件名称的
$1~$9, 代表获取第一输入参数到第9个输入参数
第10个以上的输入参数获取参数的格式: ${数字}, 否则无法获取
示例:
5.2.特殊变量:$#
获取所有输入参数的个数
5.3.特殊变量:$*
、$@
语法
$*
$@
# 含义都是获取所有输入参数, 用于以后输出所有参数
$*
与$@
区别
1.不使用双引号括起来, 功能一样
$*和$@获取所有输入参数,格式为: $1 $2 ... $n
2.使用双引号括起来
"$*"获取的所有参数拼接为一个字符串, 格式为: "$1 $2 ... $n"
"$@"获取一组参数列表对象, 格式为: "$1" "$2" ... "$n"
使用循环打印所有输入参数可以看出区别
循环语法
for var in 列表变量
do # 循环开始
命令 # 循环体
done # 循环结束
5.4.特殊变量:$?
语法
$?
含义
用于获取上一个Shell命令的退出状态码, 或者是函数的返回值
每个Shell命令的执行都有一个返回值, 这个返回值用于说明命令执行是否成功
一般来说, 返回
0代表命令执行成功, 非0代表执行失败
5.5.特殊变量:$$
用于获取当前Shell环境的进程ID号
ps -aux|grep bash
第二篇请阅读
:Linux Shell编程入门到实战(二)