Shell 脚本编程01-Shell 编程规范与变量

一、Shell 脚本的概念

  • 将要执行的命令按顺序保存到一个文本文件
  • 给该文件可执行权限,便可运行
  • 可结合各种 Shell 控制语句以完成更复杂的操作

二、Shell 脚本应用场景

  • 重复性操作
  • 批量事务处理
  • 自动化运维
  • 服务运行状态监控
  • 定时任务执行

三、Shell 脚本的构成

1.脚本声明

2.注释信息

3.可执行语句

4.常见解释器:

[root@shell ~]# cat /etc/shells 

/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash

四、Shell 脚本的编写与执行

1.编写 Shell 脚本

[root@shell ~]# vim first.sh

#!/bin/bash
#Filename:first.sh
#Author:huyouba1
#Date:2020-04-22
#查看系统内核文件信息
cd /boot/
echo "当前所在路径:"
pwd
echo "内核文件:"
ls -lh vml*

2.执行 Shell 脚本

(1)绝对路径

(2)相对路径

(3)sh 脚本路径(与 “bash 脚本路径” 相同)

(4)source 脚本路径(与 “. 脚本路径” 相同)

其中,绝对路径与相对路径实行 shell 脚本时,该脚本文件必须具有可执行权限。source 脚本路径的方法,只在当前环境生效,其他三种方法是另外再开一个 shell。

3.Shell 脚本的使用

[root@shell boot]# echo "/root/first.sh" >>/etc/rc.local    //对所有用户生效

[root@shell boot]# echo "/root/first.sh" >>/etc/profile    //对所有用户生效

[root@shell boot]# echo "/root/first.sh" >>~/.bashrc    //只对某用户生效 

[root@shell boot]# echo "/root/first.sh" >>~/.bash_profile    //只对某用户生效

五、管道操作

1.管道操作符号

“|”

2.管道符号的作用:

将左侧的命令输出结果,作为右侧命令的处理对象

3.格式:

cmd1 |cmd2 […|cmdn]

4.示例:

六、重定向操作

1.标准输入、标准输出与标准错误输出

(1)标准输入: 从该设备接收用户输入的数据 (2)标准输出: 通过该设备向用户输出数据 (3)标准错误: 通过该设备报告执行出错信息

类型 设备文件 文件描述编号 默认设备
标准输入 /dev/stdin 0 键盘
标准输出 /dev/stdout 1 显示器
标准错误输出 /dev/stderr 2 显示器

2. 重定向操作分类

类型 操作符 用途
重定向输入 < 从指定的文件读取数据
重定向输出 > 将输出结果保存到指定文件
- » 将输出结果追加到指定文件
标准错误输出 2> 将错误信息保存到指定文件
- 将错误信息追加到指定文件
混合输出 &> 将标准输出、标准错误输出保存到同一文件

重定向输入:

覆盖重定向:

标准错误输出重定向:(覆盖重定向及追加重定向):

混合输出:

七、变量

1.变量的概念

变量用来存放系统或用户需要使用的特定参数或者值,变量的值可以根据用户设定或者系统环境变化而相应变化,在 Shell 脚本中使用变量,可使脚本更加灵活,适应性更强。

2.变量的分类

(1)自定义变量:由用户自己定义、修改和使用

(2)环境变量:由系统维护,用于设置工作环境

其中 PATH 变量用于设置可执行程序的默认搜索路径

此时 PATH 环境变量被临时修改。

可以修改全局变量文件/etc/profile 或修改某用户家目录下的~/.bash_profile文件永久改 变环境变量。

(3)位置变量:通过命令行给脚本程序传递参数(也属于预定义变量)

为了在使用 Shell 脚本程序时,方便通过命令行为程序提供操作参数,Bash 引入了位置变量的概念

位置变量有 0,n,n 为 1~9 之间的数字

0:第一个字段表示命令名或脚本名称

1:脚本要处理的第一个参数

$2:脚本要处理的第一个参数

……

脚本最多可以直接处理 9 个参数

(4)预定义变量:Bash 中内置的一类变量,不能直接修改

预定义变量是 Bash 程序预先定义好的一类特殊变量,用户只能使用预定义变量,而不 能创建新的预定义变量,也不能直接为预定义变量赋值。

$*、$@ 保存了脚本要处理的所有参数($*把所有参数视为整体,$@单个参数的 组合)

$0 保存了脚本的名称

$? 保存着命令或脚本执行状态码 

$# 保存了脚本要处理的参数的个数

3.变量定义与输出

(1)定义一个新的变量

格式:变量名=变量值

注意:变量名必须以字母或下划线开头,严格区分大小写

(2)赋值可使用引号

  • 双引号:允许通过 $ 符号引用其他变量值
  • 单引号:禁止引用其他变量值,$ 视为普通字符
  • 反撇号:`` 或 $():命令替换,提取命令的执行结果

(3)输入输出

  • 输入格式:read [-p “提示信息”] 变量名
  • 输出格式: echo $变量名

4.变量作用范围

默认情况下,新定义的变量只在当前 Shell 环境中有效,因此称为局部变量。当进入子程序或新的子 Shell 时,局部变量将无法再使用。为了使用户定义的变量再所以子 Shell 环境中能够继续使用,减少重复设置工作,可以通过内部命令 export 将指定的变量导出为 “全局变量”

格式1:export 变量名

格式2:export 变量名=变量值

两种格式可以混合使用

5.变量的算数运算

变量的数值运算多用于脚本程序的过程控制,只能进行简单的整数运算,不支持小数运 算,整数值的运算主要通过内部命令 expr 进行。

格式:expr 变量1 运算符 变量2 [运算符 变量3]……

运行符号及示例:

[root@shell ~]# X=111

[root@shell ~]# Y=123

+(加):[root@shell ~]# expr $X + $Y

-(减):[root@shell ~]# expr $X - $Y

\*(乘):[root@shell ~]# expr $X \* $Y

/(除):[root@shell ~]# expr $X / $Y

%(取余):[root@shell ~]# expr $X % $Y

求精度计算:

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦