Bash编程007——函数(一)
2018-12-29 本文已影响2人
若梦儿
Bash编程007——函数(一)
使用函数可以对程序进行更好滴组织,将一些相对独立的代码变成函数,可以提高程序的可读性和重用性,避免重复编写大量相同的代码。
7.1 函数
7.1.1 函数定义
简单来说,函数就是将一组功能相对独立的代码集中起来,形成一个代码块,这个代码块可以完成某个具体地任务。本质上来说,函数是一个函数名到某个代码块的映射。当定义了函数之后,就可以通过函数名来调用其所对应的代码块。
对于shell函数而言,函数与shell脚本并没有明显的区别,shell脚本中可以使用的命令和语句,都可以在函数中使用。但是,在执行时,函数和脚本还是有着本质上的区别。shell脚本在执行时,会创建一个新的shell进程来解释执行脚本中的代码,脚本执行完成,shell进程就会结束;而函数在执行时,系统并不会为其单独创建一个进程,而是在调用者的进程中直接解释执行函数中的代码。
7.1.2 基本语法
函数基本语法:
function name (){
commands;
}
// 或者可以省略function
name () {
commands;
}
函数名的命名规则和变量的命名规则相同,由数字、字母或下划线组成且以字母或下划线开头的字符串。
示例:
function Hello(){
echo "Hello world"
}
# 执行
Hello
# 结果:Hello world
7.1.3 传递参数
当某个函数定义之后,用户就可以通过函数名来调用该函数。调用函数的基本语法如下:
func argv1 argv2 ...
其中func表示函数名,argv1、argv2等表示传递给函数的参数
在函数中可以通过一些特殊的变量来访问传递过来的参数:
1表示第一个参数等
S#,表示传递参数的总个数
$*,表示以"argv1 argv2 ..."的形式返回所有参数的值
S@,表示以"argv1" "argv2" ...的形式返回所有参数的值
示例:
function hi() {
echo $#
echo $*
}
# 执行:hi 1 2 3 4 5 6
# 结果:
6
1 2 3 4 5 6
7.1.4 函数返回值
在shell中,处理函数的返回值可以分为以下几种情况来讨论。
使用return语句返回某个数值,但是只能返回0~255之前的整数值。
将返回的数据输出到标准输出,比如使用echo命令。
示例:
function getStr() {
echo "hello"
}
# 使用:
str=$(getStr)
echo $str
# 结果:hello