脚本也是一个程序,而每一个程序本身都是一个真值表达式,它的真值由其返回值决定。故Shell脚本应该返回一个值,若脚本未显式指定返回值,则自动使用最后一条命令的返回值;如果需要显式指定脚本的返回值,需要用exit命令实现。18.3 脚本编程
18.3.1 命令、函数与脚本返回值
前文已经提过,脚本也是一个程序,而每一个程序本身都是一个真值表达式,它的真值由其返回值决定。故Shell脚本应该返回一个值,若脚本未显式指定返回值,则自动使用最后一条命令的返回值;如果需要显式指定脚本的返回值,需要用exit命令实现。
如程序清单18.10所示脚本,使用了exit 0命令显式返回了0,最终脚本执行结果返回值为0,如果删除exit 0这一行,将会返回1。程序清单18.10演示脚本显式返回值
#!/bin/sh
echo "hello world"
false #false命令返回值恒为1
exit 0 #显式指定脚本返回0
18.3.2 函数
Bash脚本中也可以定义函数,Bash里的函数行为像是一个独立的子脚本,故对于调用者来说,Shell中的函数和一个独立的命令区别并不大。
Bash中有两种定义函数的方法,一种是通过function关键字来定义,如:
function function_name {
command...
}
另有一种定义方法与C函数类似:
function_name () {
command...
}
后一种更具有可移植性,推荐使用。Bash中没有类似于C中提前“声明”函数的方法,任何函数都应该在其被调用前完整定义。
函数调用方法,就像使用命令一样来进行函数调用。如程序清单18.11所示脚本,首先定义了func函数,在调用函数时直接写func即可。
程序清单18.11函数定义和调用示例
#!/bin/sh
echo"demo for function and call"
fun() {
echo "I’am in func()"
}
fun
echo "end"
脚本的运行结果如图18.23函数定义和调用示例所示。
|