首页 > 系统相关 >Shell笔记:函数基础使用

Shell笔记:函数基础使用

时间:2024-01-21 11:22:07浏览次数:24  
标签:语句 function Shell 函数 笔记 返回值 执行 local

语法如下:

[function] func_name() {
  ...
  [return int]
}

function关键字: 定义一个函数,function关键字是可选的。
语句结束符: 函数中每个语句以换行符作为结束,不用使用分号,一行一句即可,分号通常只是用于连接两个语句。
return关键字: 也是可选的,不指定时自动使用最后一个语句的运行结果作为返回值。
函数返回值: 其实无论是否使用return指定函数返回值,本质上,函数的返回值都是此函数最后一条语句的运行结果。shell中一条语句的运行结果为整数,0表示执行成功,其他数字表示失败。获取函数返回值使用 $?$? 的本质是代表它上一条语句的执行结果,所以函数执行之后想要拿到其返回值, $? 和函数执行语句之间就不能有其他语句的执行。
函数传参: 格式为 func_name var1 var2 var3 ... ,在函数中获取参数时使用 $1${1} 的形式获取对应第一个参数,需要注意的是,获取第十个及以上参数时,就只能使用大括号的格式获取了, $10 是无法获取第十个参数的。

#!/bin/sh
function hello() {
    echo "Hello Shell"
    # 函数参数以$1或${1}、$2或${2}等方式获取对应的第一个、第二个等参数,
    # 如果参数个数大于9,那么从第十个开始,就必须使用${10}的格式了,不能使用$10的格式了
    echo 1
    echo ${2}
    return 0
}

# 函数执行直接将函数名当做命令执行即可,函数参数以空格分隔分别传入
hello var1 var2
# 函数执行结果需要在函数执行之后下一行立马获取,不能有其他语句在这中间去执行,
# 否则$?拿到的就是它上一条语句的执行结果,而不是函数的执行结果了
result=$?
echo ${result}
Hello Shell
var1
var2
0

local变量: local变量就是函数内的局部变量,只能用在函数中,如果在函数之外使用local定义变量,会报错并提示 local: can only be used in a function 。当然,函数内定义的local变量,在函数外就无法使用了,使用时不会报错,只是会拿到一个空的值。

标签:语句,function,Shell,函数,笔记,返回值,执行,local
From: https://www.cnblogs.com/guyuyun/p/17977627

相关文章

  • NCL论文阅读笔记
    ImprovingGraphCollaborativeFilteringwithNeighborhood-enrichedContrastiveLearning论文阅读笔记Abstract​ 目前的对比方法通常采用随机抽样的方式构建对比对,忽略了用户之间的相邻关系,不能充分利用对比学习作为推荐的潜力​ 为了解决上面的问题,我们提出了一种新的对......
  • 高阶函数
    '''高阶函数:Python内部具有特殊作用的函数map()如果希望序列中的函数都执行同一个函数,就用map(),比如每个元素都乘以10filter()筛选序列中符合条件的数据sorted()将序列按照没有条件排序如果打印某个方法返回的是一个对象的内存地址,可以用list强转为列表,用for循环遍历'''deff......
  • 如何使用Markdown编写笔记
    Markdown是什么?Markdown是一种轻量级标记语言,创始人为约翰·格鲁伯(JohnGruber)。它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。由于Markdown的轻量化、易读易写特性,并且对于图片......
  • 嵌套函数
    '''函数嵌套:函数里面还有一个函数函数嵌套中,内层函数想要被调用,只能通过外层函数nonlocal:修改局部变量(嵌套函数中)'''defouter():#定义一个名为outer的函数definner():#在outer函数内部定义一个名为inner的函数print('世界你好')#打印输出'世界......
  • 匿名函数二)
    '''匿名函数:没有名字的函数如果你想要定义一个临时函数,没有想好名字,可以用匿名函数函数功能比较简单的情况下才会使用匿名函数匿名函数格式lambda参数:功能lambda功能自带返回值'''#定义一个函数,计算任意两个数的和deffunc1(a,b):c=a+bprint(c)func1(10,20)total=l......
  • 【数字图像处理_冈萨雷斯】笔记:(一)绪论
    一、绪论1.图像处理分类:低级处理(输入输出都是图像,如降噪、对比度增强、锐化)中级处理(输入图像输出特征,如分割、分类、识别)高级处理(远端位置识别、视觉认知)2.数字图像处理诞生可追溯至20世纪60年代,得益于机器使用和空间项目开发计算机断层成像CT和X射线是数字图......
  • 完全没有数模基础都能看懂的神经网络笔记【零基础系列】
    神经网络算法前言(可跳过)作为数模小白,看了很多讲解新概念新模型的文章,这些文章往往要么讲的很浅不讲原理只讲应用,让人知其然不知其所以然。要么讲的很深小白看不懂,同时总是忽略关键部分,经常性引入陌生概念让初学者疑惑,因此有了本文,任何能熟练掌握线性代数知识且逻辑思维能力尚可......
  • (powershell 7) 安装及 Pycharm 上的配置
    1.windows上更新powershell下载地址(此处需要爬下墙): https://github.com/PowerShell/PowerShell选择一个LTS版本直接手动安装,完成完成后,会自动添加到PATH中,如果没有,可以手动配置#打开powershell$PSVersionTable.PSVersion 2.Pycharm配置powershell Note......
  • [SQLAlchemy] SQLAlchemy学习笔记: 基础使用
    InstallationpipinstallSQLAlchemymakesurethatissql-alchemy2创建引擎数据库url格式一般为dialect+driver://username:password@host:port/database#PyMySQL-python里的数据库驱动engine=create_engine("mysql+pymysql://scott:tiger@localhost/foo?charset=utf......
  • 大三寒假学习进度笔记11
    今日对之前学习的pyspark内容进行了梳理,同时尝试了通过SparkSQL的JDBC方式从mysql读取数据和写入数据#coding:utf8frompyspark.sqlimportSparkSessionfrompyspark.sql.typesimportStructType,StringType,IntegerTypeimportpandasaspdif__name__=='__main__......