Shell脚本概述

shell脚本的概念:

  • 将要执行的命令按顺序保存到一个文本文件

  • 给该文件可执行权限,便可运行

  • 可结合各种shell控制语句以完成更复杂的操作

shell脚本应用场景:

  • 重复性操作

  • 批量事务处理

  • 自动化运维

  • 服务运行状态监控

  • 定时任务执行

  • ...

shell的作用——命令解释器,“翻译官”

  • 介于系统内核与用户之间,负责解释命令行

QQ截图20190921141926.png

用户的登录shell

  • 登录后默认使用的shell程序,一般为/bin/bash

  • 不同shell的内部指令,运行环境等会有所区别

QQ截图20190921141926.png

编写第一个Shell脚本

编写脚本代码

  • 使用vim文本编辑器

  • 每行一条Linux命令,按执行顺序依次编写

[root@localhost ~]# vim first.sh 编辑第一个脚本
#!/bin/bash   shell声明
#first test   注释
cd /boot/     命令行
pwd
ls -lh vml*

赋予可执行权限

  • 使脚本具有可执行属性

chmod +x first.sh  赋予执行属性

执行脚本文件

需要执行权限才能执行,但是不改变位置

./first.sh 

不需要执行权限,但是改变位置

. first.sh 

source first.sh 

不需要执行权限也不会改变位置

sh first.sh 

更完善的脚本构成

  • 脚本声明

  • 注释信息

  • 可执行语句

#!/bin/bash
#first test
cd /boot/
echo "当前的目录位于:"
pwd
echo "其中以vml开头的文件包括:"
ls -lh vml*

重定向与管道操作

交互式硬件设备

标准输入:从该设备接收用户输入的数据

标准输出:通过该设备向用户输出数据

标准错误:通过该设备报告执行出错信息

类型设备文件文件描述编号默认设备
标准输入/dev/stdin0

键盘

标准输出/dev/stdout1显示器
标准错误输出/dev/stderr2显示器

重定向操作

类型作符用途
重定向输入<从指定的文件读取数据,而不是从键盘输入
重定向输出>将输出结果保存到指定的文件(覆盖原有内容)
>>将输出结果追加到指定文件
标准错误输出2>将错误信息保存到指定温家安(覆盖原有内容)
2>>将错误信息追加到指定文件中
混合输出&>将标准输出,标准错误的内容保存到同一个文件中

管道操作符号“|”

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

QQ截图20190921141926.png

QQ截图20190921141926.png

shell变量的作用,类型

变量的作用

为灵活管理Linux系统提供特定参数,有两层意思

  • 变量名:使用固定的名称,由系统预设或用户定义

  • 变量值:能够根据用户设置,系统环境的变化而变化

变量的类型

  • 自定义变量:由用户自己定义,修改和使用

  • 环境变量:有系统维护,用于设置工作环境

  • 位置变量:通过命令行给脚本程序传递参数

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

自定义的变量

定义一个新的变量

  • 变量名以字母或下划线开头,区分大小写,建议全大写

变量名=变量值

查看变量的值

echo $变量名

QQ截图20190921141926.png

赋值时使用引号

  • 双引号:允许通过$符号引用其他变量值

  • 单引号:禁止引用其他变量值,$视为普通字符

  • 反撇号:命令替换,提取命令执行后的输出结果

从键盘输入内容为变量赋值

read [-p "提示信息"] 变量名

QQ截图20190921141926.png

设置变量的作用范围

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

——两种格式可以混合使用

QQ截图20190921141926.png

整数变量的运算

expr 变量1 运算符 变量2 [运算符 变量3]...

常用的运算符

  • 加法运算:+

  • 减法运算:-

  • 乘法运算:\*

  • 除法运算:/

  • 求模(取余)运算:%

小脚本实例:输入两个数字,并求出他们的和

#!/bin/bash
#输入两个整数,求他们的和
#输入第一个数
read -p "请输入一个整数" num1
#输入第二个数
read -p "请输入一个整数" num2
#进行加法运算
sum=`expr $num1 + $num2`
#显示出两个数之和
echo "两个数字之和是:$sum"

QQ截图20190921141926.png


特殊的shell变量

环境变量

  • 由系统提前创建,用来设置用户的工作环境

  • 配置文件:/etc/profile , ~/.bash_profile

常见的环境变量

  • PWD,PATH

  • USER,SHELL,HOME

QQ截图20190921141926.png

位置变量

  • 表示为$n,n为1~9之间的数字

#!/bin/bash
echo "求和为:`expr $1 + $2`"

QQ截图20190921141926.png

预定义变量

  • $#:命令行中位置变量的个数

  • $*:所有位置变量的内容

  • $?:上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0值表示执行异常或出错

  • $0:当前执行的进程/程序号

#!/bin/bash
echo "求和为:`expr $1 + $2`"
echo "脚本名称:$0"
echo "命令行中的变量个数:$#"
echo "所有位置变量的内容:$*"

QQ截图20190921141926.png