1

例如,源代码内部的A.sh调用。B.sh调用如下A.sh

#Inside A.sh    
. ./B.sh

现在,if..else发生了一些语句B.sh并决定停止执行B.sh。如何让它回到A.sh并继续执行其余的代码?

谢谢。

4

3 回答 3

1

基本上意味着在.当前 shell 中运行这个文件。这意味着任何exit或类似的将退出当前的 (A) shell。

您需要确保 B 在不同的外壳中完成。

我还没有测试它,但( . ./B.sh )可能会工作......

正如其他人所说,您可以更简化事件:./B.sh也可能有效。

于 2013-10-24T00:24:34.807 回答
1

你可能已经注意到,如果你exit从一个被获取的文件中调用,你会退出整个 shell,而不仅仅是那个文件。

相反,您可以使用return,它(除了从函数返回)会将控制权返回给命令后面的.命令。

return请注意,从正在执行的脚本而不是已获取的脚本是错误的,因此请确保您仅return在将要获取的文件中的函数之外使用。

于 2013-10-24T12:36:40.880 回答
-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
于 2013-10-24T00:29:58.200 回答