当前位置: 首页 > news >正文

2.脚本文件初识

—>1.Makefile—自动化构建和管理项目的文件见这篇<—

1.编程语言

  编程语言分为2类,一类是编译型语言,将源文件经过编译得到可执行文件,该执行文件可以在特定平台上运行,其他平台则不行,因此是不跨平台的编程语言,但是效率也较高,经过编译得到可执行文件,每次要运行源文件直接运行该可执行文件即可,不用重新编译,除非有修改过,例如C/C++就是编译型语言;
  另一类是解释型语言,这类语言利用解释器将所要运行的代码转换成机器码让计算机执行,不运行的代码部分则不转换,注意,这类语言都是一边运行一边转换,生成对应平台的机器码,因此可以跨平台,但是效率就不是很高,常见的有JavaScript,Python,Matlab,shell等。

  脚本我的理解就是先在文件中写好一堆命令,运行这个文件时解释器将命令经过转换变成计算机能执行的机器码,让计算机按脚本里的命令一步一步执行,即命令的集合。

2.脚本解释器

  脚本语言如Python,JS,Shell都是不需要编译的解释型语言,需要用到解释器进行转换,常见的解释器有dash,bash,csh,sh等,在Linux系统中可以在终端输入 cat /etc/shells看支持的解释器类型,一般会有多种可支持解释器,要查看当前系统用的是哪种解释器可以在终端输入echo $shell查看,默认是bash解释器。

3.脚本常用命令

3.1指定解释器

  #!后面加解释器路径,例如#! /bin/sh,也可以不写,就按默认解释器来,一般Linux默认解释器是bash。

3.2注释

  #就是注释符,C语言里是\。

3.3输入

  相当于C语言里的scanf函数,脚本的输入命令是read,运行该命令时用户从键盘进行输入,输入完成后按回车完成输入,CPU读取缓冲区数据。
  如果要将输入的数据放到一个变量里直接指定变量名即可,不需要提前定义变量,如:在这里插入图片描述

3.4输出

  相当于C语言里的printf函数,脚本的输出命令是echo,运行该命令时往标准输出里输出数据,即在显示器上显示。注意:如果是输出一个字符串且字符串里有空格此时需要加上双引号,否则输出会遇到空格停止。

3.5变量

  不像C语言需要指定数据类型,脚本变量直接赋值即可,默认变量类型是字符串,引用对应变量的值时在变量名前加$符号,如果变量值是含有空格需要加双引号,而且如果使用echo输出某个变量的值,且这个变量值很长时需要加{ }修饰变量名。

3.6通配符

  通配符是用来匹配筛选用的,就比如我们用ctrl+f打开pdf的查找功能会根据我们输入的关键字进行匹配筛选类似,常见的通配符如下:
在这里插入图片描述

3.7管道

  类似输水管道将自来水从水厂输送到居民家里,管道就是将一个命令的输出作为另一个命令的输入,有两种格式:

  • 1.cmd1 | cmd2 (命令1的输出作为命令2的输入)
    例如:
    在这里插入图片描述
  • 2.cmd1 | xargs cmd2(命令1的输出作为命令2的参数)
    例如:
    在这里插入图片描述
      例子中的grep是用于查找文件里符合条件的字符串,上面命令意思就是查找家目录下hello.c的文件,找到的文件作为输出或参数,这里grep输入就是参数一样的,查找文件里的world字符串。

3.8重定向

  重定向就是把默认输入或者输出的位置变成指定位置,比如 ls 命令默认标准输出到显示器,我想输出到一个文件里就可以变成 ls >ma.text。常见重定向命令如下:
在这里插入图片描述

3.9反引号

  反引号里的会被当成命令解释,比如 ls 命令是列出当前目录下文件,现在要输出"hells"这个字符串,命令即为echo “hells”,里面的ls 被当成了普通字符,假设要让解释器将ls当成命令的话就加个反引号。

在这里插入图片描述

3.10数值运算

  脚本的变量类型默认是字符串,要实现数值运算可以用双括号,如下面例子所示:
在这里插入图片描述

3.11控制语句

  类似C语言的循环分支语句等,脚本也有,只是语法规则不一样,这里以分支语句为例,其他的大家要用到时边用边学即可。
  针对两种情况的分支语句格式:

在这里插入图片描述
  针对多种情况的分支语句格式:

在这里插入图片描述

http://www.xdnf.cn/news/168319.html

相关文章:

  • 基于单片机的智能药盒系统
  • 【Azure Redis 缓存】在Azure Redis中,如何限制只允许Azure App Service访问?
  • 贪心算法-860.柠檬水找零-力扣(LeetCode)
  • 关于OCP认证:有Oracle和MySQL两种
  • 【vue3】购物车实战:从状态管理到用户体验的全流程实现
  • 996引擎-人物模型(UIModel):创建内观时装备偏移问题
  • 「Mac畅玩AIGC与多模态02」部署篇01 - 在 Mac 上部署 Ollama + Open WebUI
  • 云原生--核心组件-容器篇-4-认识Dockerfile文件(镜像创建的基础文件和指令介绍)
  • 深度解析:TextRenderManager——Cocos Creator艺术字体渲染核心类
  • Golang 遇见 Kubernetes:云原生开发的完美结合
  • Kotlin中的also、apply、invoke用法详解
  • 泛型的诗意——深入C++模板的艺术与科学(模版进阶)
  • 【MySQL】数据类型和表的操作
  • 数据结构【堆和链式结构】
  • 音视频之H.265/HEVC熵编码
  • 第三章,GRE和MGRE
  • 算法效率的钥匙:从大O看复杂度计算 —— C语言数据结构第一讲
  • 《数据结构初阶》【顺序表 + 单链表 + 双向链表】
  • JAVA:单例模式
  • 【含文档+PPT+源码】Python爬虫人口老龄化大数据分析平台的设计与实现
  • Python爬虫(6)静态页面解析实战:BeautifulSoup与lxml(XPath)高效提取数据指南
  • Kafka批量消费部分处理成功时的手动提交方案
  • C# 类的基本概念(声明类)
  • 技术分享 | Oracle-RAC修改IP信息
  • Redis超详细入门教程(基础篇)
  • redis_Windows中安装redis
  • Spring_MVC 中的 JSON 数据处理与 REST 风格开发
  • qt.qpa.plugin: Could not find the Qt platform plugin “cocoa“ in “ “
  • 蓝桥杯 2. 确定字符串是否是另一个的排列
  • 详解最新链路追踪skywalking框架介绍、架构、环境本地部署配置、整合微服务springcloudalibaba 、日志收集、自定义链路追踪、告警等