在PowerShell中,调用cmdlet,函数,脚本文件或可操作程序时,使用点(.)和&符(&)有什么区别?
例如:
. foo.sh1
& foo.sh1
Run Code Online (Sandbox Code Playgroud)
有一个非常相似的问题已被错误地作为重复项关闭:调用PowerShell脚本块时,&符(&)和点(。)之间的差异。问题不同,并且关键字和搜索排名完全不同。在PowerShell管道中,“。”的简写是什么的答案?只能回答一半的问题。
该之间差异.和&运营商只有打电话时重要的脚本或功能为- (或它们的别名)的cmdlet和外部程序他们的行为是相同的。
对于脚本和功能,.以及&针对不同来划定范围的定义的函数,别名和变量:
&,即调用操作符,在子范围内执行脚本和函数,这是典型的用例:通常希望函数和脚本在执行时没有副作用:
在调用的脚本/函数中定义的变量,(嵌套的)函数,别名对于调用而言是本地的,并且在脚本退出/函数返回时超出范围。
但是请注意,即使在子作用域中运行的脚本也会影响调用者的环境,例如通过使用Set-Location来更改当前位置,显式修改父作用域(Set-Variable -Scope 1 ...)或全局作用域($global:...)或定义进程级环境变量。
.中,点采购操作者,在执行脚本和函数的电流范围,并且通常用于修改呼叫方的范围通过添加函数,别名,和可能的的变量,供以后使用。例如,此机制用于加载$PROFILE初始化交互式会话的文件。
需要注意的是,对于函数(与脚本相反),子级 vs. 当前级的引用范围不一定是调用者的范围:如果函数是在模块中定义的,则引用范围是该模块的范围域:
.与源自模块的函数一起使用实际上是没有意义的,因为要修改的作用域是模块的。| 归档时间: |
|
| 查看次数: |
884 次 |
| 最近记录: |