2014-03-26 138 views
2

我正在使用bash脚本,我试图从子shell脚本中的函数退出到父shell脚本并返回状态码。从子shell脚本中的函数退出到父shell脚本

Script1.sh 
echo "hello script1" 
. ./script2.sh 
echo $? 

Script2.sh 
status() 
{ 
    echo "status" 
    return 1 
} 
status 
echo "Hello shell2" 

这个脚本打印“状态”和“你好shell2”,但我想从script2.sh的状态函数退出,不打印“你好shell2”到script1.sh。

我已经检查了一些堆栈溢出问题,这些问题是关于从子脚本返回给父节点的,而不是从子节点的功能到父节点。

由于事先 索曼

回答

3

您不能指定多少水平“上升”返回,但你可以在通话的退出状态作出反应。只是让status回报,因为它目前不,既然你是采购文件中,呼叫更改为status

status || return 

这将导致被执行的脚本返回父母如果status具有非零退出状态。

+0

感谢您的回复。在我们的脚本中,我们有从不同功能内部的许多地方调用“状态”功能。是否有不同的方法来处理这种情况 – Soman

+0

不怕。如果可以在调用堆栈的任意深度调用status,则更加复杂,因为我的答案假设您在脚本级别调用“status”,而不是在另一个函数内调用。 – chepner

+0

谢谢,我会尽力找出不同的方法。 – Soman