我必须查看我的前同事留下的一些脚本,我很好奇为什么他$a = $(Read-Host -Prompt "Write something")在参数部分使用而不是$a = (Read-Host -Prompt "Write something").
我已经在一个脚本中测试了它,但到目前为止还没有看到任何差异.我通过谷歌和StackOverFlow搜索但到目前为止还没有发现任何线索可能有什么不同.也许我的搜索方法很糟糕.
分组表达式(),子表达式$()和数组子表达式@()之间有什么区别? 分组表达式只能包含一个语句.子表达式可以包含多个以分号分隔的语句.每个语句的输出都有助于子表达式的输出.数组子表达式的行为就像子表达式一样,只是它保证输出将是一个数组.这会产生影响的两种情况是:1)根本没有输出,因此结果将是一个empy数组; 2)结果是标量值,因此结果将是包含标量值的单个元素数组.如果输出已经是数组,则使用数组子表达式对输出没有影响,即数组子表达式不会将数组包装在另一个数组中.
愚蠢的例子:
$a = (Read-Host -Prompt 'something'; echo 'foo')
$b = $(Read-Host -Prompt 'something'; echo 'foo')
Run Code Online (Sandbox Code Playgroud)
第一个语句(使用分组表达式)将抛出错误,因为在分组表达式中不能有多个语句.第二个语句将起作用并在通过输入的文本后附加一行"foo" Read-Host.
在您的示例场景($a = (Read-Host -Prompt 'something')vs. $a = $(Read-Host -Prompt 'something'))中,它没有任何区别.更准确地说,您不应该在该场景中使用分组表达式或子表达式运算符,因为它们没有任何用途.
| 归档时间: |
|
| 查看次数: |
836 次 |
| 最近记录: |