Loading [MathJax]/jax/output/CommonHTML/jax.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Shell脚本——函数

Shell脚本——函数

作者头像
栗筝i
发布于 2022-12-01 13:15:20
发布于 2022-12-01 13:15:20
43800
代码可运行
举报
文章被收录于专栏:迁移内容迁移内容
运行总次数:0
代码可运行

Shell 函数的本质是一段可以重复使用的脚本代码,这段代码被提前编写好了,放在了指定的位置,使用时直接调取即可。

一、语法

Shell 函数定义的语法格式如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function name() {
  statements
  [return value]
}

对各个部分的说明:

  • function是 Shell 中的关键字,专门用来定义函数;
  • name是函数名;
  • statements是函数要执行的代码,也就是一组语句;
  • return value表示函数的返回值,其中 return 是 Shell 关键字,专门用在函数中返回一个值;这一部分可以写也可以不写。
  • { }包围的部分称为函数体,调用一个函数,实际上就是执行函数体中的代码。

二、函数定义的简化写法

函数定义时也可以不写 function 关键字:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
name() {
  statements
  [return value]
}

如果写了 function 关键字,也可以省略函数名后面的小括号:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function name {
  statements
  [return value]
}

三、函数调用

调用 Shell 函数时可以给它传递参数,也可以不传递。如果不传递参数,直接给出函数名字即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
name

如果传递参数,那么多个参数之间以空格分隔:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
name param1 param2 param3

不管是哪种形式,函数名字后面都不需要带括号。

和其它编程语言不同的是,Shell 函数在定义时不能指明参数,但是在调用时却可以传递参数,并且给它传递什么参数它就接收什么参数。

Shell 也不限制定义和调用的顺序,你可以将定义放在调用的前面,也可以反过来,将定义放在调用的后面。

四、范例

定义一个函数,计算所有参数的和:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash
function getsum(){
    local sum=0
    for n in $@
    do
         ((sum+=n))
    done
    return $sum
}
getsum 10 20 55 15  #调用函数并传递参数
echo $?

?表示函数的退出状态(返回值)

五、系统函数

5.1、basename基本语法
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
basename [string / pathname] [suffix]  

功能描述:basename命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。

选项:

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

5.2、dirname基本语法
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
	dirname #文件绝对路径	

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
shell 系统函数
功能描述:basename命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。 suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。
编程那点事
2023/02/25
1550
_Shell 运算符及语法结构
命令符 expr是对应基础的加减乘除操作识别,但是乘法和除法前面要加反斜杠 ‘\’ ,并且运算符前后需要空格,如以下例子:
会洗碗的CV工程师
2023/11/18
2370
_Shell 运算符及语法结构
快速学习-Shell函数
选项: suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。 2.案例实操 (1)截取该/home/atguigu/banzhang.txt路径的文件名称
cwl_java
2020/03/25
4300
零基础小白如何入门Shell,快来看看(收藏)这篇大总结!!
最近有点小忙,心细的朋友们可能已经看出菌已经好久没更新博客了。但是不慌,该掌握的知识,咋们也不能落下。这一期博客,我也不搞那些花里胡哨了,专心写一篇总结Shell精华的博客,也算是为像Alice一样的“小小白”谋点福利吧…φ(๑˃∀˂๑)♪
大数据梦想家
2021/01/27
1.3K0
零基础小白如何入门Shell,快来看看(收藏)这篇大总结!!
案例驱动 :从入门到掌握Shell编程详细指南
阅读提示:阅读本文大约需要15分钟,本文结合了众多的实操案例,从入门到掌握shell编程,学习起来花费时间较久,建议收藏起来慢慢学习。
百思不得小赵
2022/12/01
1.1K0
案例驱动 :从入门到掌握Shell编程详细指南
Shell脚本学习3
函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高。
用户9645905
2023/10/17
2600
linux系列之shell编程(一)
$n 功能描述:n为数字,$0 代表该脚本名称,$1-$9代表第一到第九个参数,十以内的参数,十以上的参数需要用大括号包含,如${10}
趣学程序-shaofeer
2020/07/11
1.4K0
linux系列之shell编程(一)
JavaScript——函数
在JS里面,可能会定义非常多的相同代码或者功能相似的代码,这些代码可能需要大量重复使用。
岳泽以
2022/10/26
8940
大数据系列博客之 --- 深入简出 Shell 脚本语言(提升篇)
-ge 大于等于(greater equal) -ne 不等于(Not equal)
房上的猫
2019/01/24
4550
linux shell快速入门
Shell 是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序,用户可以用 Shell 来启动、挂起、停止甚至是编写一些程序。
冬夜先生
2021/09/13
7670
shell脚本-函数
https://www.cnblogs.com/shenxm/category/1154724.html shell脚本-函数 函数介绍 函数function是由若干条shell命令组成的语句块,实现代码重用和模块化编程。 它与shell程序形式上是相似的,不同的是它不是一个单独的进程,不能独立运行,而是shell 程序的一部分。 函数和shell程序比较相似,区别在于: Shell 程序在子Shell中运行 而Shell函数在当前Shell中运行。因
菲宇
2022/12/21
5920
Linux Shell编程
Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。看一个示意图
用户9615083
2022/12/25
36.6K0
Linux Shell编程
Shell函数定义
Shell基础入门 linux系统是如何操作计算机硬件CPU,内存,磁盘,显示器等?使用linux的内核操作计算机的硬件Shell介绍... Shell计算命令 Shell计算命令:expr命令
乐心湖
2021/01/18
3.7K0
Shell函数定义
函数
在 JS 里面,可能会定义非常多的相同代码或者功能相似的代码,这些代码可能需要大量重复使用。
星辰_大海
2020/09/30
6670
Linux之Shell编程
Shell 是一个命令行解释器, 它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序, 用户可以用 Shell 来启动、 挂起、 停止甚至是编写一些程序.
OY
2022/02/21
2K0
Linux之Shell编程
unction关键
Lua中的函数定义使用function关键字,后跟函数名和括号内的参数列表。函数体被包含在end关键字之间。如果函数需要返回值,可以使用return语句。
Yolo-Yolo
2024/11/23
420
unction关键
python 之 函数
现在有这么个情况:假设我们python中的len方法不可以使用了,而恰好你又要计算一个字符串的长度你该怎么办呢?有人说:‘简单,可以使用for循环嘛
全栈程序员站长
2022/07/21
3770
shell脚本简介+编写
$#:获取所有输入参数个数,常用于循环,判断参数的个数是否正确以及加强脚本的健壮性。
ha_lydms
2023/08/10
4220
shell脚本简介+编写
Shell编程-函数
作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
运维小路
2024/11/01
860
Shell编程-函数
shell脚本知识记录
./test.sh: line 2: NAME: command not found
用户9127725
2022/08/08
5500
相关推荐
shell 系统函数
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验