title: Shell编程之执行后返回
tags: shell编程,执行后返回
前言
今天一个同事问我这样一个问题,脚本里面有一个函数调用了exit是不是整个脚本都会退出,当时我给出的是肯定的回答,但是这种完全是没有考虑清楚。这种情况,要分不同的调用方式来分情况讨论的。
基本知识点
- 我们知道shell函数里面,退出时基本上有两种方式:return和exit。return退出方式的返回值0-255,此时只是退出了这个函数。而exit退出的方式,是退出这个进程。这两种返回方式都可以通过$?,常见的退出方式基本上需要用echo打印出想要的值。比如以下代码:
function test() { echo "result" return 1 } a=$(test) echo $? echo $a 上面代码的返回值结果是: result 1
- shell里面,调用命令并获得其返回值我们一般通过以下方式来调用 $() 和 ``,但是这种的调用方式是新开一个进程来完成里面的命令来执行的,所以里面的命令如果有exit,只是执行这个命令的进程退出了,而调用者是不会退出的。所以,我们通过这种方式调用函数或者命令时,需要在主进程里面再次进行判断其返回值,然后再决定怎么往下走。