编程基础与脚本规范

一.编程基础

1.1程序组成

程序:算法+数据结构

  • 数据:是程序的核心
  • 算法:处理数据的方式
  • 数据结构:数据在计算机中的类型和组织方式

1.2.编程风格

1.过程式:以指令为中心来组织代码,数据服务于指令。代表:c语言,bash。
过程式编程语言三种执行逻辑:

  • 顺序执行:程序按从上到下顺序执行
  • 选择执行:程序执行过程中,根据条件不同,进行选择不同分支继续执行
  • 循环执行:程序执行过程中需要重复执行多次某段语句
    2.对象式:以数据为中心来组织代码,指令服务于数据,代表:java,c++,Python
    • 类:实例化对象,method

1.3 编程语言的分类

根据运行方式

  • 编译运行:源代码—编译器----程序文件
  • 解释运行:源代码----运行时启动解释器,由解释器边解释边运行

根据启动编译过程中功能的实现是调用库还是调用外部的程序文件

  • shell脚本编程:利用系统上的命令及编程组件进行编程
  • 完整编程:利用库或编译程组件进行编译

二.shell脚本基础

2.1shell脚本的用途和应用场景

用途:

  • 自动化常用命令
  • 执行系统管理和排除故障
  • 创建简单的应用程序
  • 处理文本或文件
    2.2应用场景:
  • 重复性操作
  • 交互性任务
  • 批量事务处理
  • 服务运行状态监控
  • 定时任务执行

2.2常见的shell解释器

  • Linux系统中shell是一种特殊的应用程序,它介于操作系统内核和用户之间,充当一个“命令解释器”的角色,负责接收用户输入的操作指令并进行解释,将需要执行的操作传递给内核执行,并输出结果。是用户使用linux的桥梁
  • shell即是一种命令语言,又是一种程序设计语言
  • 常见的shell解释器程序有很多种,使用不同的shell时,其内部指令,命令行提示符等方面会存在一些区别,通过/etc/shell 文件可以了解当前系统所支持的shell脚本种类

查看本机shell信息:
在这里插入图片描述
linux 中常见的shell

  • bash:基于GUN的框架下发展的shell
  • csh:类似c语言的shell
  • tcsh:整合了csh提供了更多功能
  • sh:已经被bash替换
  • nologin:让用户无法登录
    bash(bin/bash)是目前大多数linux版本采用的默认shell

bash特性
1.支持快捷键:比如ctrl+c强制终止进程,ctrl+l清屏,tab补齐 ,等等。
2.支持产看历史命令
3.支持别名
4.标准输入和标准输出的重定向
5.管道符
6.文件名通配机制
7.支持命令hash
8.支持变量

这些功能都是bash特有的,其他shell环境没有这些功能,或者说没有这么全,所以bash取代sh成为了linux的默认shell

2.3shell脚本基本结构

shell脚本就是将各类命令预先放入到一个文件中,方便一次性执行行的一个程序文件,主要是方便管理员进行设置或者管理的

什么是shell脚本

  • 将要执行的命令按顺序一一列出,保存到一个文本文件,最后自动执行
  • 执行脚本需要x权限,也可以使用绝对路径来执行文件
  • 可结合各种shell控制语句完成更复杂的操作

脚本的构成:
1.脚步申明(申明解释器):第一行开头“#!/bin/bah”,表示此行以下的代码语句是通过/bing/bash程序来执行。还有其他类型的解释器,比如#/usr/bin/python,#! /usr/bin/expect
2.注释信息:以#开头的语句表示为注释信息,被注释的语句在脚本运行时不会被执行
3.可执行语句:如echo命令,用于输出“”之间的字符串

2.4shell规范脚本

脚本名称规范:文件名以.sh结尾,方便识别
脚本代码开头约定:
1.第一行一般为调用使用的语言
2.程序名,避免更改文件名后无法找到正确的文件
3.版本号
4.更改后的时间
5.作者的相关信息
6.该程序的作用,及注意事项
7.最后是各版本的更新时间

2.5脚本的执行方式

1.指定路径去找执行文件,文件需要有执行权限

  • 绝对路径。如:/root/hello.sh
  • 相对路径。如:./hello.sh
    在这里插入图片描述
    2.指定解释器去执行(bash脚本名),不需要执行权限
  • bash脚本名。如:bash hello.sh
  • “source脚本名”h或‘“.脚本名”。 //不会启动子shell环境

在这里插入图片描述
注意;
1.执行脚本时的shell环境:

  • source和.执行脚本时,会在当前shell环境中执行脚本
  • bash,绝对路径,相对路径,执行脚本时,会创建一个子shell环境,并在这个子shell环境中执行脚本
    2.不建议使用source来执行脚本,可能会影响一些资源配置
    3.脚本中的空白行会被解释器忽略
    4.脚本中,除了shebang,余下所有以#号开头的行,都会被视作注释行而被忽略,即为注释行

2.6脚本错误调试

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

bash -n 脚本名称     //只检查语法错误,不真正执行脚本,定位的错误行可能不准确
bash -x 脚本名称     //显示每个命令的执行过程,方便发现逻辑板错误

三.重定向与管道符

由于shell脚步“批量处理”的特殊性,其大部分操作过程位于后台,不需要用户进行干预,因此要学会提取,过滤执行信息变得十分重要,所以我们需要重定向和管道

3.1标准输入去输出

当执行shell命令时,会默认打开3个文件夹,每个文件夹有对应的文件描述符来方便我们使用

类型 设备文件 文件描述 默认情况 对应文件位置
标准输入 /dev/stdin 0 从键盘获得输入 proc/self/fd/0
标准输出 /dev/stdout 1 输出到屏幕 proc/self/fd/1
错误输出 /dev/stderr 2 输出到屏幕 /proc/self/fd/2

交互式硬件设备:

  • 标准输入:从该设备接收用户输入数据
  • 标准输出:通过该设备想用户输出的数据
  • 标准错误:通过该设备报告执行出错误信息

3.2重定向

1.重定向的意思就是,不通过标准输出到默认屏幕上,而是输出到你指定的位置
输出重定向

符号 作用
命令>文件 将标准输出结果保存到指定文件中
命令>>文件 将标准输出结果追加到指定文件尾部
命令2>文件 将错误输出信息保存到指定文件中
命令2>>文件 将错误输出信息追加到指定文件尾部
命令 >文件 2>&1 混合输出,将标准输出与错误输出保存到同一个文件中
注:
  • &表示混合,&>和>&都表示将标准输出和标准错误输出重定向到同一个文件
  • 命令>文件2>&1 ,表示把错误输出2重定向给前面的标准输出1,即将错误输出和标准输出保存到同一个文件中
    在这里插入图片描述
  1. 将‘aaa’重定向输出到fa.txt文件中,之后将‘bbb’输出到fa.txt文件中,覆盖原有的‘aaa’,最后将‘ccc’追加到fa.txt文件中
    在这里插入图片描述
    3.使用分界符进行输入重定向
    在这里插入图片描述
    4.混合输出,将标准输出和错误输出同时重定向到文件中
    在这里插入图片描述

3.3 管道符

管道符作用是连接两个命令,将第一个命令的标准输出作为第二个命令的标准输入。同一行命令中可以使用多个管道符

Linux下的管道符使用| 表示

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/fyb012811/article/details/132192307