shell脚本之函数篇
Posted temagenie
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本之函数篇相关的知识,希望对你有一定的参考价值。
话不多说,直接上格式:
linux shell中的函数格式:
function Myfunc(){
action;
[return int;]
}
其中,个人认为function和()都是函数的标志,如果不需要传递参数的话,选择其一即可让Myfunc表示为一个函数;
过程式的编程,涉及到一个重要的话题,即代码重用,一段代码的重用性是衡量程序脚本水平的重要指标之一。
Shell中的函数也是有生命周期的:
在被调用时创建,返回时终止。return是终止函数执行的标志。一旦出现return时,函数内剩余的内容不会被执行。
如果函数中没有return语句,缺省情况下,返回的是函数中最后一条命令的执行结果。
函数为什么需要返回值?
函数的返回值区别于函数的执行结果;
函数的执行结果可有可无,通过使用echo、print等命令输出信息;
函数的返回值,也成函数的退出状态码,一定存在,默认是函数中最后一条命令的退出状态码,否则就用return N来实现(注意这里的N必须为整数)
个人认为,函数的返回值一方面可以便于我们做脚本中的逻辑判断,通过在函数中设置不同的return值来实现不同的逻辑决策,
从而实现不同的功能,另一方面,是在函数内部去实现逻辑判断,从而终止函数的执行。
和大多数的编程语言相似,Shell脚本中的函数也可以传递参数:
① 如何传递参数?
调用函数时,在函数名后面以空白分隔开的实参列表即可;
如:
#!/bin/bash
Myfunc(){
echo "the first argument is $1"
echo "the number of arguments is $#"
return 4
}
Myfunc "hello" "world"
执行结果:
[email protected]:/home/marvin/shell# ./function.sh
the first argument is hello
the number of arguments is 2
[email protected]:/home/marvin/shell# echo $?
4
② 在函数体中,有哪些特殊变量可以引用?
如上述代码中,$1和$#的使用:
我们可以使用$1 $2 $3 ...来引用传递参数,
使用$0来引用该脚本的相对路径;
使用$#来引用传递参数的数目;
使用$*和[email protected]来引用传递的整体参数(两者略有区别);
一切和shell脚本中原生的特殊变量类似。
③ 函数递归的实现:
以上是关于shell脚本之函数篇的主要内容,如果未能解决你的问题,请参考以下文章