内置命令return用于从函数中返回。前面关于函数的例子中并没有看到return,因为return命令在函数中不是必须的,函数被调用时,函数内的命令执行完成后自然会返回到调用它的地方(一般是返回到主程序)。如果某函数中有return命令,执行到return时就返回。如果return在函数中不是最后一条命令,那么return后面的其他命令不再执行。
看下面的例子,函数里面有两条打印命令,中间是返回命令。
运行脚本,函数return_1内的第一条echo命令被执行,然后执行return,返回到主程序,第二条echo命令不被执行。
注意return命令不能直接用在脚本的主程序里,看下面的例子:
如果直接运行脚本,会遇到错误提示:
但用source命令或者点命令来运行该脚本,就没问题:
先执行脚本fun_return_2.sh的第一条echo命令,显示return_2_1,然后执行return,脚本结束,第二条echo命令不被执行。
return命令可以带参数,格式为returnN。一个函数通过return返回到主程序,该函数的返回状态值(退出状态)决定于return前一条命令的退出状态;一个函数通过returnN返回到主程序,那么该函数的返回状态值就是N。
脚本fun_no_return.sh中定义了两个函数,都没有命令return。函数fun_date中是一条date命令,函数fun_datee中是一条不存在的datee命令:
运行source命令,使得这两个函数在当前shell中生效:(www.xing528.com)
调用函数fun_date,其实就是执行date命令,执行成功,函数fun_date的退出状态为0:
调用函数fun_datee,其实就是执行一条不存在的命令datee,执行失败,函数fun_datee的退出状态为127,也就是执行不存在命令的退出状态:
脚本fun_return_number.sh中两个函数都包括命令return:
运行source命令,使得这两个函数在当前shell中生效:
调用函数fun_date,其实就是执行date命令,执行成功,而函数fun_date的退出状态为25,不再是0,因为函数中有命令return25:
调用函数fun_datee,其实就是执行一条不存在的命令datee,执行失败,而函数fun_datee的退出状态为0,不再是127,因为函数中有命令return 0:
在函数中,也可以使用命令exit,执行exit后整个脚本结束运行。而在函数中执行return的话,将回到脚本中调用该函数的地方,而不是让脚本结束运行。这是exit与return的区别。
在7.4节fun_FUNCNAME.sh的基础上,在第一个函数中加入命令exit,得到如下脚本:
执行脚本fun_exit.sh,只有第一个函数被调用了,因为第一个函数中的命令exit运行后,整个脚本结束运行,第二个函数没有被调用的机会:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。