function 自定义函数、函数调用

自定义函数

shell脚本中可以自定义函数,函数定义语法如下:

[ function ] functionname [()]
{
actions
[return n]

}

说明:
1、可以带function fun() 定义,也可以直接fun() 定义,括号内不带任何参数,如果你嫌麻烦,函数定义时也可以不写 function 关键字,但这时必须要写小括号,如果写了 function 关键字,也可以省略函数名后面的小括号;
2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值, return后跟数值n(0-255);
3、函数调用的时候可以传位置参数,位置参数用空格间隔;
4、如果{与命令写在同一行,则需要空一格再写命令,同时如果命令与}同在一行,需要在之间加分号分隔;
5、定义函数函数体不能为空,否则执行会报错。
6、查看定义过的函数:declare -f [函数名]
7、shell中的函数体内还可以定义函数,但外部函数被调用时才会定义并调用他的内部函数。如果内部函数的调用先与外部函数的调用,则此时会报错,因为此时内部函数还未被定义,只有先执行了当外部函数的调用,此时内部函数才被定义了,此后就可以在任何位置调用内部函数了。
8、函数也可以像普通的shell脚本一样接受位置参数。
9、在函数体定义变量时,变量默认是全局的,即在函数体外部也可以访问这个变量,使用local关键字进行声明变量为局部变量,这样的变量就只能在函数体内使用了。局部变量声明:local var_name=”value”

演示示例:
function sum()
{
return expr $1 + $2
}

函数的调用

1、函数要先定义,才能调用,函数调用格式:直接写函数名即可调用,不需要加括号,如:name;
2、调用 Shell 函数时可以给它传递参数,也可以不传递。如果不传递参数,直接给出函数名字即可:name;
3、如果传递参数,那么多个参数之间以空格分隔:name param1 param2 param3;
4、不管是哪种形式,函数名字后面都不需要带括号;
5、和其它编程语言不同的是,Shell 函数在定义时不能指明参数,但是在调用时却可以传递参数,并且给它传递什么参数它就接收什么参数;
6、Shell 也不限制定义和调用的顺序,你可以将定义放在调用的前面,也可以反过来,将定义放在调用的后面。

演示示例:
[root@Centos8 shell_scripy]# cat function.sh
#!/bin/bash
function sum ()
{
echo expr $1 + $2
}
sum 34 60

[root@Centos8 shell_scripy]# ./function.sh
94

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在R语言中,用户可以通过自定义函数来实现各种功能。自定义函数的基本框架如下所示:myfunction <- function(arg1, arg2, ... ){ statements return(object) }其中,myfunction函数的名称,arg1、arg2等是函数的参数,statements是函数的语句,return(object)用于返回结果。例如,下面是一个随机数产生并画图的自定义函数的例子:function1 <- function(x,y){ plot(x,y) return(x+y) }当我们调用这个函数时,需要提供参数x和y,然后函数会绘制出对应的图形,并返回x和y的和。另外,RStudio还提供了函数抽取的功能,可以将选中的代码段抽取为一个函数,并自动设置参数。这样可以提高代码的可读性和重用性。 #### 引用[.reference_title] - *1* [R语言系列:自定义function](https://blog.csdn.net/weixin_33920401/article/details/86250299)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [R语言-编写自定义函数](https://blog.csdn.net/xiaohukun/article/details/76056366)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值