shell 函数定义和调用

一. 函数定义

语法:

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

说明:

1、可以带function fun()  定义,也可以直接fun() 定义,不带任何参数。

2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255

#!/bin/sh

build(){
    echo $1, $2;
    return $(($1+$2))
}
build 5 7;

total=$(build 3 2);

echo $totle, $?

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

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

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

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

二. 函数作用域

#!/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 变量=值 ,这时变量就是内部变量,它的修改,不会影响函数外部相同变量的值 。

时间: 2024-10-03 12:26:32

shell 函数定义和调用的相关文章

实验八——函数定义及调用总结

实验八--函数定义及调用总结 1.本次课学习到的知识点: (1)void为不反回结果的函数,且void不能省略,否则默认为int,函数体中没有表达式的return语句,也可省略return. (2)不返回结果的函数在定义.调用.参数传递.函数声明上,思路与以前相同,适用于把一些确定的.相对独立的程序功能封装成函数. (3)局部变量:定义在函数的内部,且有效作用范局部变量一般定义在函数或复合语句的开始处,围局限于所在的函数内部,形参是局部变量. (4)不能定义在中间位置. (5)全局变量:定义在函

第9课 - 函数定义及调用

第9课 - 函数定义及调用 1. makefile中的函数 (1)make 解释器提供了一系列的函数供 makefile 调用 (2)在 makefile 中支持自定义函数实现,并调用执行 (3)通过 define 关键字实现自定义函数 2. 在makefile中自定义函数 (1)自定义函数的语法 其中,$(0) 代表被调用的函数名,$(1) , $(2) , $(3) ... 代表调用函数时后面的传参 (2)深入理解自定义函数 - 自定义函数是一个多行变量,无法直接调用 - 自定义函数是一种过

函数 定义与调用

为什么要用函数 函数的定义与调用 函数的返回值 函数的参数 本章小结 返回顶部 为什么要用函数 现在python届发生了一个大事件,len方法突然不能直接用了... 然后现在有一个需求,让你计算'hello world'的长度,你怎么计算? 这个需求对于现在的你其实不难,我们一起来写一下. s1 = "hello world" length = 0 for i in s1: length = length+1 print(length) 好了,功能实现了,非常完美.然后现在又有了一个需

函数定义及调用(八)

在 makefile 中是支持函数的概念的,make 解释器提供了一系列的函数供 makefile 调用.在 makefile 中支持自定义函数实现,并调用执行:提供 define 关键字实现自定义函数.下面是自定义函数的语法 我们再来深入地看看自定义函数,自定义函数是一个多行变量,无法直接调用:其次自定义函数是一种过程调用,没有任何的返回值:自定义函数用于定义命令集合,并应用规则中.下来我们还是以代码为例来进行说明 .PHONY : test define func1     @echo "M

make--变量 条件判断 函数定义及调用

一.变量的高级主题 A.变量值的替换1.使用指定字符(串)替换变量中的后缀字符(串)2.语法格式:$(var:a=b) (将a替换成b)a.替换表达式中不能有任何的空格b.make中支持使用${}对变量进行取值示例 src:=a.cc b.cc c.cc obj:=$(src:cc=o) test: @echo "obj=>$(obj)" 输出结果由上图可以看出变量值的替换B.变量的模式替换1.使用%保留变量值中的指定字符,替换其它字符2.语法格式:$(var:a%b=x%y)a

python 函数定义和调用

一.python 函数的分类: 1.内置函数 2.标准库函数 3.第三方函数 4.用户自定义函数 函数定义和调用 在使用函数之前必须先定义函数,执行def时,会创建一个函数对象并绑定到函数名变量上,定义函数的语法格式如下: def 函数名(形参列表):    //由零条到多条可执行语句组成的函数    [return [返回值]] 示例: 二.返回值: return 返回值要点: 1.如果函数体中包含return 语句,则结束函数执行并返回值: 2.如果函数体中包含return语句,则返回Non

Bash脚本之函数定义和调用

把那些在脚本中重复出现并且没有任何改变的代码,封装起来,在适当的场景中调用执行.程序员将这种被封装起来的代码称为功能体,或者叫模块,也称为函数.这样看来是不是和循环类似,循环也是为了方便去多次执行一堆代码,而函数是将一堆代码写在一起,起一个名字,然后在需要这堆代码的时候只需要写上函数的名字即可.在shell脚本编程中,函数是由若干条shell命令组成的语句块,函数里面的内容和shell程序形式上是一致的.不同之处就是,shell代码可以直接被执行,而函数中的内容,不能独立执行,只有被调用的时候才

shell 函数定义及应用

1.函数介绍 函数function是由若干条shell命令组成的语句块,实现代码重用和模块化编程. 它与shell程序形式上是相似的,不同的是它不是一个单独的进程,不能独立运行,而是shell程序的一部分. 使用时, 在shell 中  source  /path fo function_file,函数将保留至用户退出,也可以使用 unset function_name ,撤销函数 函数和shell程序比较相似,区别在于: Shell程序在子Shell中运行 而Shell函数在当前Shell中运

实验七——函数定义及调用总结

1.本次课学习到的知识点: 函数 (1)定义:函数是一个完成特定工作的独立程序模块,包括函数和自定义函数两种: 1.scanf(),printf()等为库函数,由c语言系统提供定义,编程时只要直接调用即可. 2. cylinder(),fact()函数,需要用户自己定义,为自定义函数. (2)cylinder(),fact()功能不同,但他们能实现一个计算,并可以得到一个明确的计算结果. (3) 函数定义的一般形式为: 函数类型    函数名(形式参数表) { 函数实现过程 } (4)函数部首: