例如,A.sh
在源代码中调用B.sh
。该呼叫如A.sh
#Inside A.sh
. ./B.sh
现在,if..else
发生了一些B.sh
声明,并决定停止执行B.sh
。如何让它回到A.sh
并继续执行其余的代码?
感谢。
答案 0 :(得分:1)
.
基本上意味着在当前shell中运行此文件。这意味着任何exit
或类似的将退出当前的(A)shell。
您需要确保B在不同的shell中完成。
我还没有测试过,但是( . ./B.sh )
可能有用......
正如其他人所说,您可以更多地简化事件:./B.sh
也可能有用。
答案 1 :(得分:1)
您可能已经注意到,如果您从源文件中调用exit
,则退出整个shell,而不仅仅是该文件。
相反,您可以使用return
,它(除了从函数返回之外)将按照.
命令将控制权返回给命令。
请注意,来自执行的脚本的return
是错误的,而不是来源的,因此请确保仅在函数外部使用return
在一个将被采购的文件中。
答案 2 :(得分:-1)
foo.sh:
#!/bin/bash
echo "hi"
./bar.sh
echo "done"
bar.sh:
#!/bin/bash
echo "bar here!"
[[ "1" == "1" ]] && exit 0
echo "oh no!"
运行foo.sh:
$ ./foo.sh
hi
bar here!
done