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

Shell编程之函数

目录

基本概念

自定义函数

系统函数

1.read

 2.basename

 3.dirname


基本概念

        将一段代码组合封装在一起实现某个特定的功能或返回某个特定的值,然后给这段代码取个名字,也就是函数名,在需要实现某个特定功能的时候直接调用函数名即可。

        函数名的定义和定义变量的规则基本一致,但是函数名允许以数字开头。

自定义函数

基本语法:

[ function ] 函数名[()]

{

        程序

}

注意:

  • 必须在调用函数之前声明函数,shell 脚本是逐行运行,不会像其他脚本一样先编译。
  • 函数返回值只能通过 $? 系统变量获得,可以显式的加 return 返回,如果不加将以最后一条命令运行结果作为返回值。

示例如下,一个求和函数:

#!/bin/bashfunction sum()
{s=0;s=$[$1+$2];echo $s
}read -p "请输入第一个加数:" N1read -p "请输入第二个加数:" N2sum $N1 $N2

系统函数

        linux 中的系统函数很多这里只举几个简单的例子 可以参考 值得收藏的!Linux系统调用函数列表 - 知乎

1.read

语法:

read -t(指定读取值时等待得时间(秒))  -p(指定读取值时的提示符) [ 变量名 ]

例如:

#!/bin/bashread -t 10 -p "请在7秒内输入参数" AGEecho $AGE

 2.basename

基本语法:

basename [ string/pathname ] [suffix]

该命令会删除所有的前缀包括最后一个‘/’字符,然后将字符串显示出来

选项:suffix 为后缀,如果 suffix 被指定了,basename 会将 pathname 或者 string 中的 suffix 去掉。

示例如下:

basename /root/shell/read.sh
basename /root/shell/read.sh .sh

 3.dirname

dirname 文件绝对路径

功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录部分),然后返回剩下的路径(目录部分)。

dirname /root/shell/read.sh

相关文章:

Shell编程之函数

目录 基本概念 自定义函数 系统函数 1.read 2.basename 3.dirname 基本概念 将一段代码组合封装在一起实现某个特定的功能或返回某个特定的值,然后给这段代码取个名字,也就是函数名,在需要实现某个特定功能的时候直接调用函数名即可。 函…...

10.物联网LWIP之TCP状态转变

一。TCP状态机 1.青粗线:理想TCP状态转变(服务器视角下) 2.虚线:被动TCP状态转变(服务器视角下) 3.细实线:不经常出现的TCP状态转变(类似于边界处理) 1.青粗线解释--》服…...

Img标签的src地址自动拼接本地域名(localhost:8080)导致图片不显示问题

摘要:做Vueelement ui项目的时候,发现使用element ui的upload上传图片时,不显示的问题。我项目的图片是上传到七牛云,长传成功后返回存储在七牛云中的地址。后面发现是因为返回的地址是外部地址,需要完整的URL&#xf…...

数据结构入门 — 栈

本文属于数据结构专栏文章,适合数据结构入门者学习,涵盖数据结构基础的知识和内容体系,文章在介绍数据结构时会配合上动图演示,方便初学者在学习数据结构时理解和学习,了解数据结构系列专栏点击下方链接。 博客主页&am…...

Unity Android 之 在Unity 中引入 OkHttp的操作注意(OKHttp4.xx- kotlin 的包)简单记录

Unity Android 之 在Unity 中引入 OkHttp的操作注意(OKHttp4.xx- kotlin 的包)简单记录 目录 Unity Android 之 在Unity 中引入 OkHttp的操作注意(OKHttp4.xx- kotlin 的包)简单记录 一、简单介绍 二、OKHttp 4.xx 的 SDK 封装 aar 给 Unity 的使用注意 三、附录 OKHttp 的…...

内嵌功能强大、低功耗STM32WB55CEU7、STM32WB55CGU7 射频微控制器 - MCU, 48-UFQFN

一、概述: STM32WB55xx多协议无线和超低功耗器件内嵌功能强大的超低功耗无线电模块(符合蓝牙 低功耗SIG规范5.0和IEEE 802.15.4-2011标准)。该器件内含专用的Arm Cortex -M0,用于执行所有的底层实时操作。这些器件基于高性能Arm …...

【测试】笔试03

文章目录 1. 哪种测试模型把测试过程作为需求分析、概要设计、详细设计及编码之后的阶段( )2. 在下面所列举的逻辑测试覆盖中,测试覆盖最强的是?3. 网络管理员编写了shell程序prog1.sh,测试时程序死循环无法结束,可以通过下列方式…...

JavaScript的while和for循环

一、循环语句 1.认识循环 在开发中我们经常需要做各种各样的循环操作: 比如把一个列表中的商品、歌曲、视频依次输出进行展示;比如对一个列表进行累加计算;比如运行相同的代码将数字 1 到 10 逐个输出; 循环 是一种重复运行同…...

mqtt安卓客户端

1.MQTT(消息队列遥测传输协议),是一种基于 发布/订阅 (publish/subscribe)模式的"轻量级"通讯协议, 该协议构建于TCP/IP协议上 。MQTT最大优点在于,可以以极少的代码和有限的带宽&…...

pdf怎么删除其中一页?

pdf怎么删除其中一页?现在,pdf文件已经深入影响着我们的工作和学习,如果你是一个上班族,那么几乎每天都会使用到pdf格式的电脑文件。当我们阅读一个页数众多的PDF文件时,可能会发现实际上只需要其中的一小部分内容。很…...

10.Redis 渐进式遍历

Redis 渐进式遍历 渐进式遍历scan 渐进式遍历 keys 命令一次性的把整个redis中所有的key都获取到,keys *但这个操作比较危险,可能会一下子得到太多的key,阻塞 redis 服务器。 通过渐进式遍历,就可以做到,既可以获取到所有的 key&…...

字符函数和字符串函数(2)

目录 memcpy memmove memcmp memcpy void * memcpy ( void * destination, const void * source, size_t num ); 1.函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置。 2.这个函数在遇到 \0 的时候并不会停下来。 3.如果source和destination有…...

目录扫描+JS文件中提取URL和子域+403状态绕过+指纹识别(dirsearch_bypass403)

dirsearch_bypass403 在安全测试时,安全测试人员信息收集中时可使用它进行目录枚举,目录进行指纹识别,枚举出来的403状态目录可尝试进行绕过,绕过403有可能获取管理员权限。不影响dirsearch原本功能使用 运行流程 dirsearch进行…...

【UE 材质】常用向量运算节点——点积、叉积、归一化

目录 一、点积 二、叉积 三、归一化 一、点积 点积,也称为内积或数量积,是一种用于计算两个向量之间关系的操作。对于两个三维向量 A(a1,a2,a3)和 B(b1,b2,b3),它们的点积可以用以下公式表示: ABa1​⋅…...

音视频 ffmpeg命令提取PCM数据

提取PCM ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -f s16le 48000_2_s16le ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -sample_fmt s16 out_s16.wav ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -codec:a pcm_s16le out2_s16le.wav ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -f…...

【MySQL】实现可扩展性:构建高性能的系统

什么是可扩展性?可扩展性的好处扩展方式纵向扩展(Scaling Up)横向扩展(Scaling Out) 总结 💯感谢 💖 什么是可扩展性? 可扩展性是指系统能够在需要时轻松地适应更多的工作负载和资源…...

网站用户体验之深度感悟

个性化定制界面和极简版原装界面,哪一个你用起来更加顺手呢,相比之下你更喜欢哪一个? 界面选择: (提醒:仅个人感悟。~~) 方向一:表明自己的喜好 我个人觉得更喜欢个性化定制界面。…...

目标检测YOLO实战应用案例100讲-道路场景下目标检测与分割模型的压缩研究与实现

目录 前言 目标检测方法 语义分割方法 相关理论基础 2.1 YOLO目标检测算法介绍...

基于MSP430 红外避障-遥控小车(电赛必备 附项目代码)

文章目录 一、硬件清单二、模块连接三、程序设计四、项目源码 项目环境: 1. MSP430F55292. Code Composer Studio3. 蓝牙调试助手 项目简介: 小车可分为3种工作模式,每种工作模式都会打印在OLED显示屏上,通过按键转换工作模式。 模…...

大型商城系统功能逻辑架构_各大系统关系设计_OctShop

一个商城系统应该具备什么样的功能才算一个合格的网上商城呢,才能满意用户的下单支付,退款退货,售后等需求呢! 商城一般分为三种角色:买家,商家,平台,这三种角色都有各自的功能特点。…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

<6>-MySQL表的增删查改

目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表&#xf…...

无法与IP建立连接,未能下载VSCode服务器

如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...

网络编程(UDP编程)

思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...

Kafka入门-生产者

生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

消息队列系统设计与实践全解析

文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...

6.9-QT模拟计算器

源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...

rm视觉学习1-自瞄部分

首先先感谢中南大学的开源&#xff0c;提供了很全面的思路&#xff0c;减少了很多基础性的开发研究 我看的阅读的是中南大学FYT战队开源视觉代码 链接&#xff1a;https://github.com/CSU-FYT-Vision/FYT2024_vision.git 1.框架&#xff1a; 代码框架结构&#xff1a;readme有…...