初始shell脚本

Shell脚本的概念

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

给该文件可执行权限

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

 

Shell脚本的应用场景

重复性操作

交互性任务

批量事务处理

服务运行状态监控

定时任务执行

 

Shell的作用 — 命令解释器,充当“翻译官”

介于系统内核与用户之间,负责解释命令行,Shell (壳程序)是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个“命令解释器"的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。

 

编写脚本代码

使用vi或者vim编辑器,一般都是使用vim编辑器

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

shell脚本的构成

脚本申明(解释器) :若第一行为“#!/bin/bash", 表示此行以下的代码语句是通过/bin/bash程序来解释执行,#!/bin/bash为默认解释器。还有其它类型的解释器,比如#!/usr/bin/python、#!/usr/bin/ expect

注释信息:以“#”开头的语句表示为注释信息,被注释的语句在运行脚本时不会被执行。(shell脚本文件的第一行是个例外,#后面的感叹号会告诉shell用哪个shell来运行脚本)

可执行语句:比如echo命令,用于输出" "之间的字符串。

shell脚本的执行

指定路径去执行文件,文件需要有执行权限。

chmod +x AAA.sh

绝对路径:/root/mzs/AAA.sh

相对路径:./AAA.sh

 

 

指定解释器去执行(bash 脚本名),不需要执行权限。

bash 脚本路径

sh 脚本路径

 

 

 

source 脚本路径(source可以用 . 代替)

source命令是一个内置的shell命令,用于从当前shell会话中的文件读取和执行命令。source命令通常用于保留、更改当前shell中的环境变量。简而言之,source一个脚本,将会在当前shell中运行execute命令。

sh,bash、绝对路径、相对路径 执行脚本时,会创建一个子shell环境,并在这个子shell环境中执行脚本。

source和 . 执行脚本时,会在当前shell环境中执行脚本

错误调试

  1. 命令错误: 命令错误不会影响接下来的命令,之后的命令会继续执行。
  2. 语法错误: 会导致后续的命令不执行。造成脚本中一部分命令已执行,一部分未执行。
  3. 逻辑错误: 执行后的效果不是自己想要的。需要自己去排查

bash -n 脚本名称 //只检查语法错误,不真正执行脚本。定位的错误行可能不准确。

bash -x 脚本名称 //显示每个命令的执行过程,方便发现逻辑错误

重定向与管道操作

交互式硬件设备

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

标准输出:通过该设备向用户输出数据         /dev/stdout  1

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

重定向操作

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

管道符

x1 |  x2     链接多个命令,把命令x1的结果作为命令x2的操作对象

如果管道符合右边是一定需要执行对象的命令,则管道符号 后面要有 xargs 命令来传递执行参数 (x1 |  xargs x2)

shell变量

自定义变量

sheLl脚本给变量赋值的方式

变量名=变量值

例:name=1

查看变量的值:

echo &变量名

unset可以取消变量  例 :unset name

赋值时使用引号

双引号" ":会把引号的内容当成整体来看待。强引用,识别变量,允许通过$符号引用其他变量值。 ​

 单引号' ':会把引号的内容当成整体来看待。弱引用,禁止引用其他变量值,单引号内的内容都会被认为是普通字符。 ​

 反撇号` ` 和 $() :调用命令执行后输出的结果。如果存在嵌套,不能使用反撇号。 ​

 花括号{ } :定义变量范围。 echo <span class="katex"><span class="katex-mathml">color{color}<span class="katex-html"><span class="base"><span class="strut"><span class="mord"><span class="mord mathnormal">c<span class="mord mathnormal">o<span class="mord mathnormal">l<span class="mord mathnormal">o<span class="mord mathnormal">r{price}

read命令

一:read  -p  “提示信息”  变量名

echo  $变量名

二:在脚本中编写,在命令行实现read获取

特殊的shell变量

环境变量

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

配置文件:/etc/profile(全局生效)、~/.bash_profile(当前用户环境)

常见环境变量

env PATH HOME PWD USER

使用 env 命令可以查看到当前工作环境下的环境变量 

变量USER表示用户名称,

HOME表示用户的宿主目录,

LANG表示语言和字符集,

PWD表示当前所在的工作目录,

变量PATH表示可执行程序的默认搜索路径

预定义变量

$#:表示命令行中位置参数的个数,传递到脚本的参数个数 

 @:与@:与@与*相同,@以"@以"@"1" “2 " … " 2" … "2"…"n” 的形式输出所有参数 

$?:显示上一条命令的退出状态;0表示没有错误,其他任何值表明有错误

$0:脚本本身

日期

date +%F显示现在日期

date +%Y -%m-%d 年月日

date +%T 显示时间 HMS几点几分几秒

-%H 为小时

%w 周几

date -d “-1day” 一天之前

date -d “1day” 一天之后

posted @ 2022-10-31 16:07  林乃均  阅读(28)  评论(0编辑  收藏  举报