千家信息网

linux shell自定义函数方法有哪些

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容介绍了"linux shell自定义函数方法有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所
千家信息网最后更新 2026年10月31日linux shell自定义函数方法有哪些

本篇内容介绍了"linux shell自定义函数方法有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、定义shell函数(define function)

语法:

[ function ] funname [()]
{
action;
[return int;]
}

说明:

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

实例(testfun1.sh):

#!/bin/sh    fSum 3 2;  function fSum()  {    echo $1,$2;    return $(($1+$2));  }  fSum 5 7;  total=$(fSum 3 2);  echo $total,$?;           sh testfun1.sh testfun1.sh: line 3: fSum: command not found 5,7 3,2

从上面这个例子我们可以得到几点结论:

1、必须在调用函数地方之前,声明函数,shell脚本是逐行运行。不会像其它语言一样先预编译。一次必须在使用函数前先声明函数。

2、total=$(fSum 3 2); 通过这种调用方法,我们清楚知道,在shell 中 单括号里面,可以是:命令语句。 因此,我们可以将shell中函数,看作是定义一个新的命令,它是命令,因此 各个输入参数直接用 空格分隔。 一次,命令里面获得参数方法可以通过:$0…$n得到。 $0代表函数本身。

3、函数返回值,只能通过$? 系统变量获得,直接通过=,获得是空值。其实,我们按照上面一条理解,知道函数是一个命令,在shell获得命令返回值,都需要通过$?获得。

二、函数作用域,变量作用范围

先我们看一个实例(testfun2.sh ):

#!/bin/sh  echo $(uname); declare num=1000;  uname() {   echo "test!";   ((num++));   return 100; } testvar() {   local num=10;   ((num++));   echo $num;  }  uname; echo $? echo $num; testvar; echo $num;                          sh testfun2.sh Linux test! 100 1001 11 1001

我们一起来分析下上面这个实例,可以得到如下结论:

1、定义函数可以与系统命令相同,说明shell搜索命令时候,首先会在当前的shell文件定义好的地方查找,找到直接执行。
2、需要获得函数值:通过$?获得
3、如果需要传出其它类型函数值,可以在函数调用之前,定义变量(这个就是全局变量)。在函数内部就可以直接修改,然后在执行函数就可以读出修改过的值。
4、如果需要定义自己变量,可以在函数中定义:local 变量=值 ,这时变量就是内部变量,它的修改,不会影响函数外部相同变量的值 。

这些,是我在工作中,对linux ,shell 函数使用一些经验总结,有没有提到地方,欢迎交流!

以下是其它网友的补充:

本教程目前为止所有脚本都是从头到尾执行。这样做很好,但你也许已经注意到有些脚本段间互相重复。

shell允许将一组命令集或语句形成一个可用块,这些块称为shell函数。

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

函数名(){
command1
command2
...
commandN
[ return value ]
}

如果愿意,可在函数名前加上关键字function,这取决于使用者。
function 函数名(){
command1
command2
...
commandN
[ return value ]
}

函数返回值,可以显示增加return语句;如果不加,则将最后一条命令运行结果作为返回值(一般为0,如果执行失败则返回错误代码)。 return后跟数值(0-255)。

函数可以放在同一个文件中作为一段代码,也可以放在只包含函数的单独文件中。函数不必包含很多语句或命令,甚至可以只包含一个echo语句,这取决于使用者。

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

#!/bin/bashdemoFun(){echo "This is your first shell function!"}echo "Function begin..."helloecho "Function end!"输出:Function begin...This is your first shell function!Function end!

下面定义一个带有return语句的函数:

#!/bin/bashfunWithReturn(){echo "The function is to get the sum of two numbers..."echo -n "Input first number: "read aNumecho -n "Input another number: "read anotherNumecho "The two numbers are $aNum and $anotherNum !"return $(($aNum+$anotherNum))}funWithReturnecho "The sum of two numbers is $? !"输出类似下面:The function is to get the sum of two numbers...Input first number: 25Input another number: 50The two numbers are 25 and 50 !The sum of two numbers is 75 !

函数返回值在调用该函数后通过 $? 来获得。

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

"linux shell自定义函数方法有哪些"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

函数 命令 变量 语句 方法 参数 脚本 地方 实例 文件 输出 运行 相同 代码 作用 使用者 例子 内容 取决于 后跟 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 耶加雪菲 广州百单互联网科技有限公司 互联网科技公司税收优惠 互联网科技社 互联网与新科技 北京互联网络科技有限公司 兼蜜互联网科技 成都狮子座互联网科技 上海亿帐通互联网科技 天扬科技互联网广告 昭通云南众福互联网科技有限公司 湖北码尼互联网科技有限公司电话 互联网科技大奖都有哪些公司 燊美集互联网科技有限公司 晋城互联网科技 徐州市互联网科技有限公司 南通创西澳互联网科技有限公司 智帮互联网科技公司最近动向 有人说阿里系是互联网科技企业 兰石爱特工业互联网科技分公司 什么是科技互联网 苏州找大状互联网科技有限公司 深圳互联网络科技有限公司 顺网科技2021年互联网排名 美国互联网科技实力 半导体行业属于互联网高科技类吗 广州互联网高科技取餐柜 福建互联网展示科技馆设计 广西泛欧互联网科技有限公司 亚光科技低轨卫星互联网
0