在不退出终端的情况下停止 bashrc 执行



我有一个.bashrc,我想看起来像这样:

testfunc() {
if [ condition passes ] 
then
stop all execution
fi
}
jobA() {
testfunc
...
}
jobB() {
testfunc
...
}

问题是如何在不退出终端的情况下停止所有执行?我知道只有两个选项可以停止执行:

  1. exit: 这也会导致终端关闭
  2. return:它只停止返回所在的函数中的执行。我可以让所有调用testfunc检查其返回代码的函数,但这有很多重复的 if 语句。

还有其他选择吗?

检查testfunc的结果并不是那么麻烦:testfunc || return而不是你的裸testfunc就是你所需要的(你不必拥有整个if/then/fi(。

不过对于你的问题...不,AFAIK 无法退出所有函数,但不能退出 shell 本身。

只需使用圆括号将您的作业放入子外壳中即可。然后,您可以退出子外壳。

$ type testfunc
testfunc is a function
testfunc () 
{ 
if true; then
exit;
fi
}
$ type jobA
jobA is a function
jobA () 
{ 
testfunc
}
$ type jobB
jobB is a function
jobB () 
{ 
testfunc
}
$ ( jobA; jobB; )
$ 

并且终端不会退出。

如果将整个.bashrc代码包装在单个服务while循环中,则可以使用break将其保留:

#!/bin/bash                                                                     
# for testing
condition="true"
# a test func                                                                      
func() {
if [ $condition == "true" ]
then
# 1 to break after calling, 0 not
return 1
fi
}
# the while    
while [ $((++i)) -eq 1 ]
# the main .bashrc code goes here
do
# "exit" after a function
func || break
# or exit from main
if [ $condition != "true" ]
then
break
fi
done
# anything after the above done gets executed after break

相关内容

  • 没有找到相关文章

最新更新