例如,源代码内部的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