脚本专栏 
首页 > 脚本专栏 > 浏览文章

详解shell 函数定义与调用

(编辑:jimmy 日期: 2024/11/26 浏览:3 次 )

一、Shell函数定义格式

shell函数定义格式,各部分说明如下:

[ function ]等中括号括起来部分----表示可选(即可有可无)

your_function_name部分----为函数名

your_shell_commands部分----为函数代码;shell一般以行为单位,但可以使用“\”换行,也可以在单行内使用“;”作为分隔符

return int部分----shell函数可以有返回值,但只能返回整数不能返回字符串

[ function ] your_function_name()
{
  your_shell_commands;
  [return int;]
}

二、基本函数定义与调用

本节程序实现函数定义与调用,注意调用函数是不要使用括号(即如testFun()是不对的),代码如下:

testFun{
  echo "helloworld!"
}

testFun

运行如下:

详解shell 函数定义与调用

三、传递参数调用

3.1 传递参数没有空格

本节程序实现向被调用函数传递参数,$0是运行该脚本的shell传递的参数从$1开始、传递多个参数是以空格分隔,代码如下:

testFun(){
  echo $1
}

param="helloworld!"
testFun $param

运行如下:

详解shell 函数定义与调用

除了可以通过$n形式获取第n个参数外,还可以使用以下几个写法:

形式 说明 $# 传递到脚本的参数个数 $* 以一个单字符串显示所有向脚本传递的参数 $$ 脚本运行的当前进程ID号 $! 后台运行的最后一个进程的ID号 $@ 与$*相同,但是使用时加引号,并在引号中返回每个参数。 $- 显示Shell使用的当前选项,与set命令功能相同。 $"htmlcode">

testFun(){
  echo $1
}

param="hello world!"
testFun $param

运行如下:

详解shell 函数定义与调用

可以看到只有空格前的“hello”被打印了出来,空格后的“world!”并没被打印出来(实际上空格后的"world!"被识别成了$2)

要传递有空格的参数也简单,在传递时加上双引号即可(单引号就不被认为是变量了所以不能用单引号),代码如下:

testFun(){
  echo $1
}

param="hello world!"
testFun "$param"

运行如下:

详解shell 函数定义与调用

四、获取返回值

4.1 返回整型

testFun(){
  echo "helloworld!"
  return 99
}


# 千万要注意shell并不像其他语言直接返回返回值,其返回值放到$"the return value is: $"

4.2 返回字符串

我们在前面一直说shell函数只能返回整型不能返回字符串,我们试一下强行返回字符串,代码如下:

testFun(){
  echo "helloworld!"
  return "success"
}

testFun

运行如下,可以看到运行到return处报错“-bash: return: success: numeric argument required”

详解shell 函数定义与调用

所以要通过return返回字符串是没戏的,我们有两个变通的方法,第一种是通过$()获取函数的所有打印,代码如下:

testFun(){
  echo "helloworld!"
  echo "success"
}

return_value=$(testFun)
echo "$return_value"

运行如下:

详解shell 函数定义与调用

可以看到成功获取到了‘success“。但同时也可以看到这种做法获取到的被调用函数的所有输出,单要返回值到得单独解析一下

另外的一种做法是直接用一个变量,shell的变量都是全局的在被调用函数中赋值的变量在调用函数处也可获取,代码如下:

testFun(){
  echo "helloworld!"
  return_value="success"
}

testFun
echo $return_value

运行如下:

详解shell 函数定义与调用

参考:

http://edu.jb51.net/linux/linux-shell-passing-arguments.html

以上就是详解shell 函数定义与调用的详细内容,更多关于Shell 函数定义与调用的资料请关注其它相关文章!

上一篇:详解shell 变量
下一篇:Linux文本查看命令及其选项详解(cat,head,tail)
一句话新闻
一文看懂荣耀MagicBook Pro 16
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?
友情链接:杰晶网络 DDR爱好者之家 南强小屋 黑松山资源网 白云城资源网 网站地图 SiteMap