Shell 脚本

目录

程序编程风格

1.shell脚本   什么是she11?

1.2 什么是shell脚本?及构成

1.3 脚本执行逻辑及执行方式

2.重定向和管道操作

2.1 重定向

2.2管道符

3.shell 变量的作用以及类型

3.1常见shell变量的类型包括:

3.2 命名要求

3.3.整数变量的运算(shell默认只支持整数的运算)


程序编程风格

面向过程语言 开发的时候 需要 一步一步 执行

  • 做一件事情,排出个步骤,第一步干什么,第二步干什么,如果出现情况A,做什么处理,如果出现了情况B,做什么处理

  • 问题规模小,可以步骤化,按部就班处理

  • 以指令为中心,数据服务于指令

  • C,shell

面向对象语言 开发的 时候 将 任务 当成一个整体

  • 将编程看成是一个事物,对外界来说,事物是直接使用的,不用关心事物内部的情况。而编程就是设置事物能够完成功能。

  • 一种认识世界、分析世界的方法论。将万事万物抽象为各种对象

  • 类是抽象的概念,是万事万物的抽象,是一类事物的共同特征的集合

  • 对象是类的具象,是一个实体

  • 问题规模大,复杂系统

  • 以数据为中心,指令服务于数据

  • java,python,golang等 云 go k8个字母s 平台

1.shell脚本   什么是she11?

She11是一个命令解释器,它在操作系统的最外层,负责直接与用户进行对话,把用户的输入解释给操作系统,并处理各和各样的操作系统的输出结果,输出到屏幕反馈给用户。这种对话方式可是交互也可以是非交互式的,我们所输入的命令计算机是不识别的,这时就需要一种程序来帮助我们进行翻译,变成计算机能识别的二进制程序,同时又把计算机生成的结果返回给我们。

就是 将人类使用的高级语言翻译成二进制,也可以将二进制翻译成高级语言

1.1shell的作用

shell 的作用 :linux系统中的shell是一个特殊的应用程序,他介于操作系统内核与用户之间,充当一个“命令解释器”的角色,负责接受用户输入的操作命令并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。

linux中常见的shell

  • bash:基于gun的框架下发展的shell

  • csh:类似c语言的shell

  • tcsh:整合了csh提供了更多功能

  • sh:已经被bash替换

  • nologin:让用户无法登录

bash (/bin/bash)是目前大多数Linux 版本采用的默认shell

shell脚本用途

  • 将简单的命令组合完成复杂的工作,自动化执行命令,提高工作效率

  • 减少手工命令的重复输入,一定程度上避免人为错误

  • 将软件或应用的安装及配置实现标准化

  • 用于实现日常性的,重复性的运维工作,如:文件打包压缩备份,监控系统运行状态并实现告警等

1.2 什么是shell脚本?及构成

脚本的构成

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

2、注释信息:以#开头的语句表示为注释信息 # 注 释

3、可执行语句:比如echo命令用于输出“ ”之间的字符串

编写脚本如果以.sh结尾 脚本内容会高亮

1.3 脚本执行逻辑及执行方式

执行脚本

  1. dadw直接调用shell解释器 加上脚本的名字 bash脚本名  不需要加上权限
  2. 路径/脚本  (绝对相对 ) 但是这个需要权限
  3. source (.)加脚本 名字不建议使用 不需要权限  source会直接修改当前bash环境内容,会有一些问题

为什么命令可以补全?

1.有运行权限 2.在$PATH路径下面

脚本执行逻辑

  1. 顺序执行 程序按从上到下顺序执行
  2. 选择执行 程序执行过程中,根据条件的不同,进行选择不同分支继续执行
  3. 逻辑执行 程序执行过程中需要重复执行多次某段语句

脚本错误

  1. 命令错误  不会影响接下来的命令执行,但是本条命令不执行
  2. 语法错误  直接影响脚本无法正常运行
  3. 逻辑错误   只能自己去筛查

bash -n 脚本名称  脚本 检查语法错误

bash -x 脚本名称 模拟执行脚本 告诉你脚本哪边有问题

了解 加一些脚本的安全选项

set -e  一旦错误立即停止

set -u 变量不存在 不执行

总结 脚本错误常见的三种区别

1.语法错误,会导致后续的命令不继续执行,可以用bash -n检查错误,提示的出错行数不一定是准确的

2.命令错误,默认后续的命令还会继续执行,用bash -n无法检查出来,可以使用bash -x进行观察

3.逻辑错误,只能使用bash -x进行

2.重定向和管道操作

2.1 重定向

类型设备文件文件描述编号默认设备
标准输入/dev/stdin0键盘
标准输出/dev/stdout1显示器
标准错误输出/dev/stderr2显示器

交互式硬件设备

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

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

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

重定向的意思就是 ,不输出到默认设备上,输出到你指定的位置

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

重定向 改变电脑数据的输出方向

默认电脑数据的输出方向是屏幕(你发送一条指令给电脑 电脑会回复结果给你 结果一定显示在屏幕上)

我们称为 标准输入

如果电脑没有正确回复

我们称为 错误传输

我们通过 键盘 鼠标 扫描仪 话筒等设备输入给电脑的指令

我们称为 标准输入

在linux中一切皆是文件(ll /dev/std*)

改变输出方向 1、可以输出别的终端设备 2、输出到文件里

>覆盖     >>追加

2.2管道符

|将第一个命令的结果 当做后一个命令的处理对象 (有标准输出 大概率可以使用|)

 xargs命令 代表标准输出   ls|xargs touch

3.shell 变量的作用以及类型

3.1常见shell变量的类型包括:

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

2.环境变量:由系统维护,用于设置工作环境                当前目录 当前主机 $ PATH

3.只读变量:只可以读取不可以更改                                只能读不能修改    常量

4.位置变量:通过命令行给脚本传递参数

5.预定义变量:Bash中内置的一类变量               不能修改  规定好的变量  放在那里让你使用

特殊符号

${ }定义的变量名的范围

“”变量在双引号中可以识别 弱引用

‘ ’  变量在单引号中不被识别 强引用

`` 反撇号  代表引用命令执行的结果  效果等于 $( )

(脚本中只要是变量 就{ }起来 一定不会出错)

3.2 命名要求

  • 区分大小写

  • 不能使程序中的保留字和内置变量:如:if, for,hostname 命令 a=

  • 只能使用数字、字母及下划线,且不能以数字开头,注意:不支持短横线 “ - ”,和主机名相反

  • 不要使用内置的变量,使用英文尽量使用词义通俗易懂,PATH

  • 大驼峰 StudentFirstName

  • 小驼峰 studentFirstName

  • 下划线 student_name

预定义

$?  代表上一次命令执行结果是否正确 0代表正确 非0代表不正确

$0  代表脚本的文件名字

$$  当前bash的 pid

$#  代表位置参数的总个数

$*  代表返回所有参数  所有参数当成一个整体返回  

$@ 代表返回所有参数  每一个参数都是独立的个体返回

3.3.整数变量的运算
(shell默认只支持整数的运算)

格式:expr 变量1 运算符 变量2 [运算符 变量3]
运算符:+ 加法、-减法、\*乘法、/除法、%取余
常见的运算表达式:(result代表自定义变量,可用任意代替)
result=$(expr 变量1 运算符 变量2)
result=$((变量1 运算符 变量2))
result=$[变量1 运算符 变量2]
let result=变量1 运算符 变量2
i++ 相当于 i=$[$i + 1]        i++是先赋值再运算
i--   相当于 i=$[$i - 1] 
i+=1相当于i=$[$i + 1]
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值