提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 一、shell脚本概述
- 1.Shell脚本应用场景
- 2.Shell的作用
- 3.用户的登录Shell
- 二、Shell编程规范
- 1.she11脚本的构成
- 2.运行shel1脚本
- 3.重定向与管道操作
- 1.交互式硬件设备
- 2.重定向操作
- 3.管道操作符号”|”
- 三、Shell变量的作用、类型
- 1.自定义变量
- 1.定义一个新的变量
- 2.赋值时使用引号
- 3.变量的作用范围
一、shell脚本概述
Shell(壳程序)是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个"命今解释器"的角色,负责接收用户输入的操作指令(命令) 并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。
- 将要执行的命令按顺序保存到一个文本文件
- 给该文件可执行权限
- 可结合各种Shell控制语句以完成更复杂的操作
1.Shell脚本应用场景
- 重复性操作
- 交互性任务
- 批量事务处理
- 服务运行状态监控
- 定时任务执行
2.Shell的作用
Shell的作用一命解释器“翻译官”
- 介于系统内核与用户之间,负责解释命令行
- 自动化运维
- 批量化重复操作可以编写脚本结合计划任务自动周期运行
- 减轻管理员工作量
- 提高处理文本文件的速度
- 避免配置出错
Shell是一个面向字符串的编程语言,可以跟Python之类的其他语言配合起来,比如某个复杂的功能使用一个python脚本来实现,然后在shell中调用这个脚本实现较复杂的功能:或者反过来,在Python脚本中调用外部的Shell脚本来提高自动化的效率,也是可以的。
3.用户的登录Shell
- 登录后默认使用的Shell程序,一般为 /bin/bash
- 不同Shell的内部指令、运行环境等会有所区别
二、Shell编程规范
1.she11脚本的构成
- 1.脚本申明(解释器):若第一行为"#!/bin/bash",表示此行以下的代码语句是通过/bin/bash程序来解释执行,#!/bin/bash为默认解释器。还有其它类型的解释器,比如#!/usr/bin/python、#!/usr/bin/expect。
- 2.注释信息:以"#"开头的语句表示为注释信息,被注释的语句在运行脚本时不会被执行。
- 3.可执行语句:比如echo命令,用于输出""之间的字符串
##2.编写shell脚本的规范
1.脚本声明 #!/bin/bash
2.注释信息 行首以#号开头定义注释信息,被注释的行内容将不会被执行
3.可执行语句 编写要执行的脚本代码
2.运行shel1脚本
1.用绝对/相对路径指定脚本文件运行,需要执行用户拥有执行权限x,脚本会在子shell环境中运行
2.用 bash/sh 程序指定脚本文件运行,不需要执行权限,脚本会在子shell环境中运行
3.用 source/,指定脚本文件运行,脚本会在当前shell环境中运行(会影响当前所在目录、变量的值 等因素)
3.重定向与管道操作
1.交互式硬件设备
- 标准输入: 从该设备接收用户输入的数据
- 标准输出: 通过该设备向用户输出数据
- 标准错误: 通过该设备报告执行出错信息
类型 | 设备文件 | 文件描述编号 | 默认设备 |
---|---|---|---|
标准输入 | /dev/stdin | 0 | 键盘 |
标准输出 | /dev/stdout | 1 | 显示器 |
标准错误输出 | /dev/stderr | 2 | 显示器 |
2.重定向操作
类型 | 操作符 | 用途 |
---|---|---|
重定向输入 | < | 从指定的文件读取数据,而不是从键盘输入 |
重定向输出 | > | 将输出结果保存到指定的文件 (覆盖原有内容) |
重定向输出 | >> | 将输出结果追加到指定的文件尾部 |
标准错误输出 | 2> | 将错误信息保存到指定的文件(覆盖原有内容) |
标准错误输出 | 2>> | 将错误信息追加到指定的文件中 |
混合输出 | &> | 将标准输出、标准错误的内容保存到同一个文件中 |
混合输出 | 2>&1 | 将标准错误输出重定向到标准输出 |
3.管道操作符号”|”
将左侧的命令输出结果,作为右侧命令的处理象
cmd1 cmd2 [... cmdn]
三、Shell变量的作用、类型
变量的作用
- 用来存放系统和用户需要使用的特定参数 (值)
- 变量名!使用固定的名称,由系统预设或用户定义
- 变量值:能够根据用户设置、系统环境的变化而变化
变量的类型
- 自定义变量: 由用户自己定义、修改和使用
- 特殊变量:环境变量,只读变量,位置变量,预定义变量
1.自定义变量
1.定义一个新的变量
- 变量名以字母或下划线开头,区分大小写,建议全大
变量名=变量值
2.赋值时使用引号
- 双引号: 允许通过$符号引用其他变量值
- 单引号: 禁止引用其他变量值,$视为普通字符
- 反撇号: 命令替换,提取命令执行后的输出结果
从键盘输入内容为变量赋值
read [-p“提示信息”] 变量名
输出变量的值
echo $[变量名]
3.变量的作用范围
设置变量的作用范围
格式1:export 变量名...
格式2:export 变量名=变量值...