windows - Powershell 跳转到另一个脚本
问题描述
DOS 和类似 DOS 的命令文件的一个鲜为人知的特性是,以批处理文件的名称(路径)开头的行将控制权转移到新文件,没有返回(与“调用”命令相反,执行完成时返回)。
我也可以用 Powershell 做到这一点吗?这有点像“goto otherscript.ps1”,但我知道 Powershell 中没有 goto。
问的原因是,如果有更改,我想从 subversion 更新当前正在执行的脚本,然后从顶部执行更新的文件。
解决方案
您可以使用点源来运行外部脚本 - 例如:
main.ps1
. ".\sub.ps1"
sub.ps1
write-host "aaa"
它更像是“包含”而不是 goto,因为它在当前脚本的上下文中运行,并且可以访问/修改主脚本中的变量:
main.ps1
. ".\sub.ps1"
write-host $x
# ^ outputs "bbb"
sub.ps1
$x = "bbb"
write-host "aaa"
如果您使用调用运算符,您可以防止点源脚本访问主脚本的上下文- 例如
main.ps1
& { . ".\sub.ps1" }
write-host $x
# ^ outputs a blank line
sub.ps1
$x = "bbb"
write-host "aaa"
如果您exit
在点源脚本之后放置一个,它将结束主脚本并且有点像 goto ...
推荐阅读
- c# - 如何将值返回到方法中?
- sharepoint - 如果另一个列表 SharePoint 中的字段计数
- python - Python将字符串转换为字典
- azure - Azure 事件中心 - IEventProcessor 的 CloseAsync 中的 LeaseLostException
- python - 不能在类似字节的对象上使用字符串模式(Python)
- apache-spark - 从 Spark Dataframe 中删除空白字段
- xml - SAPUI5 从具有绑定的模型中的格式中格式化数据
- python - 如何更新 tkinter 画布上的 matplotlib 子图?
- c - memcpy 布尔值无效 *
- azure - 仅限特定文件夹的 Azure Web 应用 FTP 或存储资源管理器权限