shell的基础学习三

news2024/11/17 7:32:27

文章目录

  • 一、Shell 流程控制
  • 二、Shell 函数
  • 三、Shell 输入/输出重定向
  • 四、Shell 文件包含
  • 总结

一、Shell 流程控制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • for 循环

与其他编程语言类似,Shell支持for循环。

for循环一般格式为:

在这里插入图片描述
在这里插入图片描述

  • while 语句

while 循环用于不断执行一系列命令,也用于从输入文件中读取数据。其语法格式为:

在这里插入图片描述
在这里插入图片描述循环这部分不难理解,后续用到可现学现用。

二、Shell 函数

linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。

shell中函数的定义格式如下:

[ function ] funname [()]

{

    action;

    [return int;]

}

说明:

1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。
2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255 

下面的例子定义了一个函数并进行调用:

demoFun(){
    echo "这是我的第一个 shell 函数!"
}
echo "-----函数开始执行-----"
demoFun
echo "-----函数执行完毕-----"

在这里插入图片描述下面定义一个带有return语句的函数:

funWithReturn(){
    echo "这个函数会对输入的两个数字进行相加运算..."
    echo "输入第一个数字: "
    read aNum
    echo "输入第二个数字: "
    read anotherNum
    echo "两个数字分别为 $aNum$anotherNum !"
    return $(($aNum+$anotherNum))
}
funWithReturn
echo "输入的两个数字之和为 $? !"

在这里插入图片描述 函数返回值在调用该函数后通过 $? 来获得

注意:所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用。调用函数仅使用其函数名即可

  • 函数参数

在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数…

带参数的函数示例:

funWithParam(){
    echo "第一个参数为 $1 !"
    echo "第二个参数为 $2 !"
    echo "第十个参数为 $10 !"
    echo "第十个参数为 ${10} !"
    echo "第十一个参数为 ${11} !"
    echo "参数总数有 $# 个!"
    echo "作为一个字符串输出所有参数 $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73

在这里插入图片描述

注意,$10 不能获取第十个参数,获取第十个参数需要${10}。当n>=10时,需要使用${n}来获取参数。

另外,还有几个特殊字符用来处理参数:
在这里插入图片描述

三、Shell 输入/输出重定向

大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回​​到您的终端。一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端。同样,一个命令通常将其输出写入到标准输出,默认情况下,这也是你的终端。

重定向命令列表如下:

在这里插入图片描述

输出重定向

重定向一般通过在命令间插入特定的符号来实现。特别的,这些符号的语法如下所示:

command1 > file1

上面这个命令执行command1然后将输出的内容存入file1。

注意任何file1内的已经存在的内容将被新内容替代。如果要将新内容添加在文件末尾,请使用>>操作符。

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述在这里插入图片描述
command命令来自英文单词“命令”,其功能是用于调用并执行指定的命令。当系统同时定义了与命令相同的函数时,command命令会忽略Shell函数,而去执行相应的Linux命令。

四、Shell 文件包含

和其他语言一样,Shell 也可以包含外部脚本。这样可以很方便的封装一些公用的代码作为一个独立的文件。

Shell 文件包含的语法格式如下:

. filename   # 注意点号(.)和文件名中间有一空格

或

source filename

在这里插入图片描述
在这里插入图片描述

学习来自“https://www.runoob.com/linux/linux-shell-include-file.html”

总结

叔本华的挑战人生:我们每个人在生活上的一举一动,都显示出他对于自己的力量,能力,有着一定的看法,而且从一开始,他对于自己在任何情况下行动的困难或者可行性就已有了很清楚的见解。换而言之,我确信人的行为出自于他的观念。请不要对此感到惊奇,因为我们的感官感受到的不是实际事实,而只是它的主观形象。也就是说,外在世界的反映。

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

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

相关文章

数字取证在打击和预防网络犯罪中的作用

数字取证在调查网络犯罪、防止数据泄露、在法律案件中提供证据、保护知识产权和恢复丢失的数据方面发挥着关键作用。 详细了解数字取证的重要性、如何进行网络安全调查以及数字取证专家面临的挑战。 数字取证的 4 种类型 数字取证涉及使用专门的技术和工具来检查数字设备、网…

【Python零基础学习入门篇④】——第四节:Python的列表、元组、集合和字典

⬇️⬇️⬇️⬇️⬇️⬇️ ⭐⭐⭐Hello,大家好呀我是陈童学哦,一个普通大一在校生,请大家多多关照呀嘿嘿😁😊😘 🌟🌟🌟技术这条路固然很艰辛,但既已选择&…

SPSS如何进行均值比较和T检验之案例实训?

文章目录 0.引言1.均值过程2.单样本T检验3.独立样本T检验4.成对样本T检验 0.引言 因科研等多场景需要进行绘图处理,笔者对SPSS进行了学习,本文通过《SPSS统计分析从入门到精通》及其配套素材结合网上相关资料进行学习笔记总结,本文对均值比较…

Day5_创建mapper文件/编写查询语句sql

上一节主要介绍了springboot集成mybatis进行,以及后端开发思想。这一节主要编写sql映射文件,即真正的sql语句。实现增删改查用户数据,以及配置application.yml或者configuration文件实现控制台打印SQL语句。 接着上一节编写续写~~~~~~ 目录…

目标检测模型量化---用POT工具实现YOLOv5模型INT8量化

POT工具是什么 POT工具,全称:Post-training Optimization Tool,即训练后优化工具,主要功能是将YOLOv5 OpenVINO™ FP32 模型进行 INT8 量化,实现模型文件压缩,从而进一步提高模型推理性能。 不同于 Quantiz…

vim操作笔记

1. Vim普通模式指令 指令描述yy复制当前行y{n}y复制当前行起的后面 n 行p在当前行粘贴{n}p在当前行重复粘贴 n 次dd删除当前行d{n}d删除当前行起的后面 n 行x剪切当前光标的字符X剪切当前光标的前一个字符r{char}替换一个字符R不定长替换yw复制一个词dw删除一个词(…

【GAMES101】03 Transformation

2D线性变换 ——写成矩阵形式 1、Scale(缩放) 2、Reflection Matrix(反射矩阵) 3、Shear Matrix(剪切矩阵) 4、Rotation Matrix(旋转矩阵) 推导过程: 5、Translation Ma…

第十四届蓝桥杯大赛软件赛省赛(Java 大学B组)

目录 试题 A. 阶乘求和1.题目描述2.解题思路3.模板代码 试题 B.幸运数字1.题目描述2.解题思路3.模板代码 试题 C.数组分割1.题目描述2.解题思路3.模板代码 试题 D.矩形总面积1.问题描述2.解题思路3.模板代码 试题 E.蜗牛1.问题描述2.解题思路3.模板代码 试题 F.合并区域1.题目描…

Vue2加载倾斜摄影

vue3项目加载倾斜摄影 vue3项目加载倾斜摄影的教程可见此人的教程,亲测可用 https://blog.csdn.net/qq_37750030/article/details/124680036 vue2项目加载倾斜摄影 可是为什么到了vue2的老项目里面用不了呢? 原因在于这几个库,全是ts的&…

只出现一次(N次)的数字 / 出现次数最多的数字 / 数组中数字出现的次数

一.题目类型简介 数组中数字出现的次数是一类经典的问题,通常让我们求数组中数字出现的次数及其衍生的问题,比如,只出现一次的数字,只出现两次的数字,在一个数组中只有一个数字出现一次,其他出现两次或者三…

基于FPGA+JESD204B 时钟双通道 6.4GSPS 高速数据采集模块设计(二)研究 JESD204B 链路建立与同步的过程

基于 JESD204B 的采集与数据接收电路设计 本章将围绕基于 JESD204B 高速数据传输接口的双通道高速数据采集实现展 开。首先,简介 JESD204B 协议、接口结构。然后,研究 JESD204B 链路建立与同 步的过程。其次,研究基于 JESD204B …

linux驱动开发 - 10_阻塞和非阻塞 IO

文章目录 1 阻塞和非阻塞 IO1.1 阻塞和非阻塞简介1.2 等待队列1、等待队列头2、等待队列项3、将队列项添加/移除等待队列头4、等待唤醒5、等待事件 1.3 Linux驱动下的poll操作函数 2 阻塞 IO 实验1、驱动程序编写2、编写测试 APP3、编译驱动程序和测试 APP4、运行测试 3 阻塞 I…

elform 动态 rules

一.使用v-for渲染时 前端由于某些需求场景需要,部分表单的渲染是通过 v-for循环渲染显示,此时如何实现表单验证呢?如下,点击第一行的号可以动态的增加更多行表单,不同于单一固定的表单行[参见下文一般情况下]&#xf…

book-riscv-rev1.pdf 翻译(自用)第一章 操作系统接口

Job of operating system: 操作系统使得多个程序分享一台计算机,提供一系列仅靠硬件无法支持的服务。 管理与抽象低级别硬件(如:文件处理程序不需要关注使用哪种硬盘)使得多个程序分享硬件(programs that can run at…

【代码练习】旋转矩阵题解思路记录分析

题目 给你一幅由 N N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。 不占用额外内存空间能否做到? 示例 1: 给定 matrix [ [1,2,3], [4,5,6], [7,8,9] ], 原地旋转输入矩阵,使其变为: [ [7…

【C语言】学习

文章目录 前言1. warm up1.1 输出helloworld1.2 示例1.3 C语言程序结构 前言 以后要学习操作系统深度学习了&#xff0c;所以C语言就不可缺少了。 1. warm up 1.1 输出helloworld #include<stdio.h> void main() {printf("Hello World!!"); }std 标准 io输…

JS案例分析-某国际音x-tt-params参数分析

今天我们要分析的网站是&#xff1a;https://www.tiktok.com/selenagomez?langen&#xff0c;参数名字叫x-tt-params。 先来抓个包 这个接口是用户视频列表url&#xff0c;参数叫x-tt-params&#xff0c;该接口中还有其他参数像msToken&#xff0c;X-Bogus&#xff0c; _sig…

Cartesi 2023 年 4 月回顾

查看你不想错过的更新 2023年5月1日&#xff0c;感谢Cartesi生态系统中所有了不起的构建者&#xff01; 在一个激动人心的旅程之后&#xff0c;我们的首届全球线上黑客马拉松正式结束了&#xff01;有超过200名注册建造者参加&#xff0c;见证了所有参与者展示的巨大才华和奉献…

【Android】串口通信的理论与使用教程

Android系统诞生这十几年以来&#xff0c;Android开发工程师岗位经历了由盛转衰的过程&#xff0c;目前纯UI的Android APP已经鲜有公司愿意花费巨资去开发&#xff0c;Android APP开发的业务也仅剩游戏、物联网&#xff08;Internet of Things&#xff0c;简称IoT&#xff09;等…

springcloud:新一代分布式定时任务框架——PowerJob

0. 引言 之前我们讲解过主流的分布式定时任务框架xxl-job&#xff0c;随着技术的迭代更新&#xff0c;更多的定时任务框架也开始出现&#xff0c;今天我们来看一看新一代的定时任务框架PowerJob 1. PowerJob简介 PowerJob是基于java开发的企业级的分布式任务调度平台&#x…