脚本执行的方式
source
点
(在当前的解释器下直接执行脚本中的命令)
bash
shell
先打开一个新的bash(子bash),在子bash下执行指令,执行完成之后退出
./ (需要执行权,提权x)
一、重定向
标准输出:屏幕
正确信息重定向输出:1>
错误信息重定向输出:2>
所有信息的重定向输出:&>
输入:
二、管道
| :管道符
grep:(行)
awk
三、变量
驼峰原则
{}:用于识别边界
预定义变量
unset:取消变量
shell脚本概述
编写一个shell脚本程序,可以批量处理、自动化地完成一系列维护任务,大大减轻管理员的负担
shell的作用
Linux系统中,shell是一个特殊的应用程序,他介于操作系统内核与用户之间,充当一个命令解释器的角色,负责接收用户输入的操作指令并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。
重定向与管道操作
- 重定向操作
- 标准输入(STDIN):默认设备是键盘,文件编号为0,命令将从标准输入文件中读取在执行过程中需要输入的数据
- 标准输出(STDOUT):默认的设备时显示器,文件编号为1,命令将执行后的输出结果发送到标准输出文件。
- 标准错误(STDERR):默认的设备是显示器,文件编号为2,命令将执行期间的各种错误信息发送到标准错误文件。
- 重定向输出
- 重定向输出指的是将命令的正常输出结果保存到指定的文件中,而不是直接显示在显示器的屏幕上。重定向输出使用“>”或“>>”操作符号,分别用于覆盖或追加文件。
- >:覆盖文件
- >>:追加文件内容
- 重定向输出指的是将命令的正常输出结果保存到指定的文件中,而不是直接显示在显示器的屏幕上。重定向输出使用“>”或“>>”操作符号,分别用于覆盖或追加文件。
- 重定向输入
- 重定向输入指的是将命令中接收输入的途径由默认的键盘改为指定的文件,而不是等待键盘输入,重定向使用“
- 错误重定向
- 错误重定向指的是将执行命令过程中出现的错误信息(选项或参数错误等)保存到指定的文件,而不是直接显示在屏幕上。
- 1>:输出正确信息
- 2>:输出错误信息
- &>:输出全部的信息
- 错误重定向指的是将执行命令过程中出现的错误信息(选项或参数错误等)保存到指定的文件,而不是直接显示在屏幕上。
- 管道操作
- 管道操作为不同命令之间的协同工作提供了一种机制,位于管道符号“|”左侧的命令输出的结果,将作为右侧命令的输入(处理对象),同一行的命令中可以使用多个管道。
- grep命令会输出整行结果,可以结合“awk”命令进一步过滤,awk ‘{print $5}’,意为过滤打印出第五列的内容
- grep “/$”:过滤以/结尾的
shell变量的作用、类型
shell变量用来存放系统和用户需要使用的特定参数(值),这些参数可以根据用户的设定或系统环境的变化而变化。通过使用变量,shell程序能够提供更加灵活的功能,适应性更强。
- 自定义变量
- 在定义一个新的变量时,一般不需要提前进行声明,而是直接指定变量名称并赋予初始值(内容)即可
- 定义变量的基本格式为“变量名称=变量值”,等号两边没有空格,变量名称需要以字母或者下划线开头,名称中不要包含特殊字符
- 查看和引用变量的值
- 通过在变量名称前添加前导符号“$”,可以引用一个变量的值。使用echo命令可以查看变量,可以在一条echo命令中同时查看多个变量值
-
- 当变量名称容易和紧跟其后的其他字符相混淆时,需要添加大括号“{}”将其括起来,否则将无法显示正确的变量名称
-
- 变量赋值的特殊操作
- 双引号(“”)
- 双引号主要起界定字符串的作用,特别是当要赋值的内容中包含空格时,必须以双引号括起来,其他情况下双引号可以省略
- 双引号(“”)
- 变量赋值的特殊操作
-
-
- 单引号(‘’)
- 当要赋值的内容中包含$、\“等特殊字符时,应该使用单引号括起来。在单引号的范围内将无法引用其他变量的值,任何字符都将作为普通字符看待
- 单引号(‘’)
-
-
-
- 反撇号(`)
- 主要用于命令替换,允许将执行某个命令的屏幕输出结果赋值给变量。反撇号括起来的范围必须是能够执行的命令,否则将会出错
- 反撇号不能实现嵌套命令替换操作,这时可以改用$(),来代替反撇号操作
- 查询提供useradd命令程序的软件包所安装的配置文件位置,可以使用以下操作
- 反撇号(`)
-
-
-
- read命令
- read命令用来提示用户输入信息,从而实现简单的交互过程
- read命令
-
-
-
-
- read命令可以结合”-p“选项来设置提示信息,以便告知用户应该输入什么样的内容,提高易用性
-
-
- 数值变量的运算
在Bash Shell环境中,只能进行简单的整数运算,不支持小数运算。整数值的运算主要通过内部命令expr进行,基本格式为
- 常用的几种运算符如下所示
特殊的shell变量
- 环境变量
- env、set,两种命令都可以查看当前工作环境中的环境变量
- 只读变量
- shell变量中有一种特殊情况,一经设定,它的值是不可改变的,这种变量称为只读变量,在创建文件时可以将其设置为只读属性,也可以将已存在的变量设置为只读属性,只读变量主要用于变量值不被修改的情况下
- 位置变量
- 位置变量也成为位置参数,使用$1、$2、$3……$9表示,$0表示命令或者脚本本身,虽然与位置变量的格式相同,但它属于预定义变量而不是位置变量
- 预定义变量
$$:显示进程号