编程基础与脚本规范

news2024/11/22 16:36:25

编程基础与脚本规范

  • 一.编程基础
    • 1.1程序组成
    • 1.2.编程风格
    • 1.3 编程语言的分类
  • 二.shell脚本基础
    • 2.1shell脚本的用途和应用场景
    • 2.2常见的shell解释器
    • 2.3shell脚本基本结构
    • 2.4shell规范脚本
    • 2.5脚本的执行方式
    • 2.6脚本错误调试
  • 三.重定向与管道符
    • 3.1标准输入去输出
    • 3.2重定向
    • 3.3 管道符

一.编程基础

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/stdin0从键盘获得输入proc/self/fd/0
标准输出/dev/stdout1输出到屏幕proc/self/fd/1
错误输出/dev/stderr2输出到屏幕/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下的管道符使用| 表示

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/861900.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TypeError: Plain typing.NoReturn is not valid as type argument解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

【C语言】初阶指针详解

目录 一、什么是指针? 1.指针变量 2.指针大小 二、指针类型 三、野指针 四、指针运算 1.指针-整数 2.指针-指针 3.指针的关系运算 五、指针和数组 六、二级指针 七、指针数组 一、什么是指针? 指针是内存中一个最小单元的编号,…

MySQL_数据库的DDL语句(表的创建与修改)

DDL 数据库操作 查看当前有哪些数据库 SHOW databases;#查看哪些数据库查询当前数据库 SELECT database();创建数据库 create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序 规则 ] ;创建一个sycoder数据库, 使用数据库默认的字符集 CREATE…

retrofit-helper 简洁的封装retrofit,优雅的取消请求

retrofit-helper Retrofit是很多android开发者都在使用的Http请求库!他负责网络请求接口的封装,底层实现是OkHttp,它的一个特点是包含了特别多注解,方便简化你的代码量,CallAdapter.Factory 和Converter.Factory可以很灵活的扩展你的请求。我们在使用的…

“崩溃”漏洞会影响英特尔 CPU 的使用寿命,可能会泄露加密密钥等

对于 CPU 安全漏洞来说,本周是重要的一周。昨天,不同的安全研究人员发布了两个不同漏洞的详细信息,一个影响多代英特尔处理器,另一个影响最新的 AMD CPU。“ Downfall ”和“ Inception ”(分别)是不同的错…

CEC2013(MATLAB):能量谷优化算法EVO求解CEC2013的28个函数

一、能量谷优化算法EVO 能量谷优化算法(Energy valley optimizer,EVO)是MahdiAzizi等人于2023年提出的一种新颖的元启发式算法,其灵感来自关于稳定性和不同粒子衰变模式的物理原理。能量谷优化算法(Energy valley opt…

AI时代的较量,MixTrust能否略胜一筹?

人工智能的能力正在迅速接近人类,而在许多细分领域,已经超越了人类。虽然短期内这个突破是否会导致人工通用智能(AGI)还不清楚,但我们现在有的模型被训练成在数字交互中完美地模仿高能人类。尽管AGI仍不确定&#xff0…

时序预测 | MATLAB实现CNN-BiGRU-Attention时间序列预测

时序预测 | MATLAB实现CNN-BiGRU-Attention时间序列预测 目录 时序预测 | MATLAB实现CNN-BiGRU-Attention时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现CNN-BiGRU-Attention时间序列预测,CNN-BiGRU-Attention结合注意力机制时…

Java课题笔记~ Request请求

1.请求消息格式 客户端发送一个HTTP请求到服务器的请求消息包括以下格式: 请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。下图给出了请求报文的一般格式。 GET请求: POST请求&am…

每日一学——OSI参考模型

OSI参考模型(Open Systems Interconnection Reference Model)是国际标准化组织(ISO)制定的一个网络通信协议的概念框架。它将网络通信划分为七个层次,每个层次负责不同的功能和任务,从物理层到应用层依次为…

【ThreadPoolTaskSchedule】实现手动开启关闭定时任务

最近在公司呢,有一个需求,大概意思就是需要我去调用远程接口,但如果出现异常或者响应失败的时候,就需要开启重试机制,直到返回成功的响应为止。我很疑惑,按理说这种情况通常都应该有一个最大重试次数吗&…

python编程英语词汇大全app,python常用单词中英对照

大家好,小编为大家解答python编程英语词汇大全 知乎的问题。很多人还不知道python编程英语词汇大全app,现在让我们一起来看看吧! 第1天 editor[edtr]n. 编者,编辑;社论撰写人;编辑装置 setting[set]n. 环境…

《爬虫》爬取页面图片并保存

爬虫 前言代码效果 简单的爬取图片 前言 这几天打算整理与迁移一下博客。因为 CSDN 的 Markdown 编辑器很好用 ,所以全部文章与相关图片都保存在 CSDN。而且 CSDN 支持一键导出自己的文章为 markdown 文件。但导出的文件中图片的连接依旧是 url 连接。为了方便将图…

封装一个常用的Enum

前言 项目里面经常用到一些下拉框 尝试封装一个比较好用的Enum 文件目录 ├── utils.ts ├── index.txs └── package.josn代码 utils.ts class Enum {static keys: string[];static values: Enum[];/*** call this function after declare all staic enum variable*…

【效率提升-Perl脚本】根据Verilog文件自动生成tb文件

文章目录 Verilog端口文件(仅做示范用)对应的tb文件相应代码 在数字IC设计过程中,根据顶层生成testbench时存在很多重复性工作,因此为了提高工作效率,特地开发此脚本。 相应的python脚本见链接: 【效率提升…

跨境商城app源代码开发--Java、H5用户端

随着全球电子商务的快速发展,跨境贸易已经成为一种新的商业趋势。在这个背景下,开发一个跨境商城APP,提供一站式跨境贸易服务,具有非常重要的意义。本文将详细阐述使用Java和H5技术进行跨境商城APP用户端源代码开发的步骤。 一、…

帮源头厂家“跑市场、谈终端、拿订单” 郑州:找准发力点,入局“预制菜”

过去5年,国内预制菜行业大火,复合增速高达95%,全国相关企业逼近6万家,面对这盘万亿级的大棋,郑州近日终于出招了,而且,一出就是大招—— 经相关部门批准,位于郑东新区的“郑菜直供园…

学C的第三十三天【C语言文件操作】

相关代码gitee自取: C语言学习日记: 加油努力 (gitee.com) 接上期: 学C的第三十二天【动态内存管理】_高高的胖子的博客-CSDN博客 1 . 为什么要使用文件 以前面写的通讯录为例,当通讯录运行起来的时候,可以给通讯录中增加、删…

LeetCode 1572. 矩阵对角线元素的和

【LetMeFly】1572.矩阵对角线元素的和 力扣题目链接:https://leetcode.cn/problems/matrix-diagonal-sum/ 给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1&…

JDK1.8 jvisualvm远程连接linux服务器tomcat8

JDK1.8 jvisualvm远程连接linux服务器tomcat jvisualvm工具 1、 可以通过官网单独下载 2、 JDK安装的bin路径下Java VisualVM.exe应用程序打开软件截图 linux服务器上tomcat8配置 只需要修改tomcat8 bin目录下的catalina.sh文件在catalina.sh文件添加以下信息 注意IP地址为…