偶尔有人可能对exit有点误解,写出下面这样的例子:
function abc { 'Start' exit 100 'Done' } abc
当你执行上面的脚本,abc函数被调用,然后终止,你只会看到“Start”输出,看不到”Done”,变量$LASTEXITCODE中包含了一个值100,真相果真如此吗?
当你把上面的abc函数在交互式的PowerShell中的控制台中运行时,函数虽然再次终止,但是这一次连同PowerShell控制台也跟着一起倒闭了,为什么?
因为”Exit”是从调用者的作用域来终止,当你运行脚本时,脚本被终止,但是PowerShell还是可以继续运行。可是当你在PowerShell控制台以交互的方式来运行这个函数,你的PowerShell控制台也会被终止,此次终止发生在全局作用域,因为这一次除了控制台,没有更高的作用域了。
为了让上面的结论更加容易理解,我们把前面的示例脚本稍微改动下:
function abc { 'Start' exit 100 'Done' }
'Function starts' abc 'Function ends'
这一次,你会看的更加真切,”exit”真的没有终止abc这个函数,而是终止了整个脚本,你既看不到”Done”也看不到”Function ends”。
原文链接:Why “exit” can kill PowerShell
本文链接: https://www.pstips.net/why-exit-can-kill-powershell.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!