浅谈Shell中的函数

 更新时间:2020年09月01日 10:18:08   作者:Dabelv  
这篇文章主要介绍了Shell中函数的相关资料,帮助大家更好的理解和使用shell,感兴趣的朋友可以了解下

函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高。像其他编程语言一样,Shell也支持函数。Shell函数必须先定义后使用。

1.Shell函数的定义格式

可以带function关键字使用function fun_name()来定义,也可以直接给出函数名fun_name()定义。不能带任何参数,函数名必须唯一,使时可以传递参数,使用$1,$2,...,$* ,$@来获取参数。建议使用function关键字来定义函数,便于代码阅读。定义格式如下:

function_name()
{
  list of commands
  [ return value ]
}

#或
function function_name()
{
  list of commands
  [ return value ]
}

函数返回值,可以显式增加return语句;如果不加,会将最后一条命令运行结果作为返回值。

Shell 函数返回值只能是整数,一般用来表示函数执行成功与否,0表示成功,其他值表示失败。如果 return 其他数据,比如一个字符串,往往会得到错误提示:“numeric argument required”。

如果一定要让函数返回字符串,那么可以先定义一个变量,用来接收函数的计算结果,脚本在需要的时候访问这个变量来获得函数返回值。

#!/bin/bash

funcWorld()
{
    echo "world"
}
res=`funcWorld`
echo "hello $res"

运行结果:

hello world

2.Shell函数的调用方式

要在脚本中调用函数, 只需给出函数名。比如要调用小节“1.Shell函数的定义格式”中的函数funcWorld(), 只需给出函数名funcWorld,函数名无需后跟小括号()。Shell函数的调用方式与Shell命令很相似。

3.Shell函数返回值的获取

使用$?获取。$?既可以获取上一条命令的退出状态,也可以获取函数的返回值。这里更加可以看出,Shell函数的调用与Shell命令的执行极为相似。

#!/bin/bash

add()
{
    varAddRes=`expr $1 + $2`
    return $varAddRes
}
add 1 2		#调用函数,传递参数
echo $?

运行结果:

3

4.Shell函数中定义局部变量

Shell函数中定义的变量默认是global的,其作用域从“函数被调用时执行变量定义的地方”开始,到Shell结束或被显示删除处为止。函数定义的变量可以使用local关键字显示定义成local的,其作用域局限于函数内,同名local变量会屏蔽global变量。但请注意,函数的参数是local的。

#!/bin/bash

function test()
{
	local localVar=dablelv	#局部变量
}
test
echo $localVar			 	#输出为空

5.Shell函数使用时需要前置申明吗

Shell函数在使用前必须定义,没有申明的说法!一个通常的办法是把函数定义放在脚本开始部分。

6.Shell函数的删除

像删除变量一样,删除函数也可以使用unset命令,不过要加上-f选项,如下所示:

unset -f function_name

7.在命令行中使用函数

如果想在命令行中使用函数,需要在命令行执行函数的定义。直接在命令行定义Shell函数有个缺点,一旦退出Shell,函数定义将失效。可以将函数定义在Home目录下的.bash_profile文件,或者对所有用户均生效的/etc/profile文件,这样每次登录后,profile文件都会被调用,在命令提示符后面输入函数名字就可以立即调用。

注意:修改文件后要想马上生效需要执行source /etc/profile或者source ~/.bash_profile,不然只能在下次重新登录时才生效。

以上就是浅谈Shell中的函数的详细内容,更多关于shell 函数的资料请关注脚本之家其它相关文章!

相关文章

  • Linux 下C语言获取文件大小

    Linux 下C语言获取文件大小

    这篇文章主要介绍了Linux 下C语言获取文件大小的相关资料,需要的朋友可以参考下
    2017-07-07
  • 大小写字母转换的shell脚本代码

    大小写字母转换的shell脚本代码

    本文介绍下,用于大小写字母转换的一例shell脚本,学习tr、awk、sed等命令的用法。有需要的朋友参考下
    2013-08-08
  • 详解Shell编程之变量数值计算(一)

    详解Shell编程之变量数值计算(一)

    本篇文章主要介绍了详解Shell编程之变量数值计算,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • Linux文件的归档和压缩命令

    Linux文件的归档和压缩命令

    文件归档命令tar,文件归档有好多好处,方便使用易于管理,接下来通过本文给大家分享linux文件的归档和压缩命令,感兴趣的朋友一起看看吧
    2017-08-08
  • 一天一个shell命令 linux文本系列-file命令用法

    一天一个shell命令 linux文本系列-file命令用法

    这篇文章主要介绍了一天一个shell命令 linux文本系列-file命令用法,需要的朋友可以参考下
    2016-06-06
  • Linux expect命令使用方法详解

    Linux expect命令使用方法详解

    在Linux系统中,expect 是一款非常有用的工具,它允许用户自动化与需要用户输入进行交互的程序,本文将深入探讨expect命令的基本语法、使用方法以及一些最佳实践,需要的朋友可以参考下
    2023-12-12
  • Linux logrotate日志切割安装配置说明

    Linux logrotate日志切割安装配置说明

    这篇文章主要为大家介绍了Linux logrotate日志切割的安装配置说明,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Linux下压缩与解压命令详解

    Linux下压缩与解压命令详解

    这篇文章主要为大家详细介绍了Linux下压缩与解压缩命令,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • Shell判断字符串变量是否为空的方法实现

    Shell判断字符串变量是否为空的方法实现

    本文主要介绍了Shell判断字符串变量是否为空的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • shell脚本查看k8s日志介绍

    shell脚本查看k8s日志介绍

    大家好,本篇文章主要讲的是shell脚本查看k8s日志介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01

最新评论