例如,源代码内部的A.sh调用。B.sh调用如下A.sh
#Inside A.sh
. ./B.sh
现在,if..else发生了一些语句B.sh并决定停止执行B.sh。如何让它回到A.sh并继续执行其余的代码?
谢谢。
例如,源代码内部的A.sh调用。B.sh调用如下A.sh
#Inside A.sh
. ./B.sh
现在,if..else发生了一些语句B.sh并决定停止执行B.sh。如何让它回到A.sh并继续执行其余的代码?
谢谢。
基本上意味着在.当前 shell 中运行这个文件。这意味着任何exit或类似的将退出当前的 (A) shell。
您需要确保 B 在不同的外壳中完成。
我还没有测试它,但( . ./B.sh )可能会工作......
正如其他人所说,您可以更简化事件:./B.sh也可能有效。
你可能已经注意到,如果你exit从一个被获取的文件中调用,你会退出整个 shell,而不仅仅是那个文件。
相反,您可以使用return,它(除了从函数返回)会将控制权返回给命令后面的.命令。
return请注意,从正在执行的脚本而不是已获取的脚本是错误的,因此请确保您仅return在将要获取的文件中的函数之外使用。
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