Linux通过source运行带有exit语句的脚本遇到的问题

在开发工具过程中遇到一个问题:在A脚本中通过source命令来调用运行B脚本,发现运行调用完B脚本后整个脚本直接退出了,没有执行完A脚本后面的语句。

分析:退出一般是由exit,return等语句导致。查看B脚本发现函数中的返回退出语句是exit,另写一个C脚本单独调用B发现不会退出C。那么差异就出来了。

原因:因为用source调用脚本是将该脚本作为当前shell的环境执行,即不会启动一个新的子进程。而exit是退出当前进程,所以通过A脚本调用B脚本时并没有启动一个新子进程,还是在当前A的进程中执行,故exit直接退出了A。

解决办法:用 "./ "来调用(会另起一个进程),或者将函数中的exit替换成return。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值