以下powershell脚本
"one","two","three" | % { "$(($l++)): $_" }
Run Code Online (Sandbox Code Playgroud)
将打印
1: one 2: two 3: three
但是,取下支架后 $l++
"one","two","three" | % { "$($l++): $_" }
Run Code Online (Sandbox Code Playgroud)
它会打印出来
: one : two : three
jon*_*n Z 12
这是因为$l++是一个无效的陈述.在powershell中,某些类型的表达式在用作语句时不会显示.无效语句包括赋值和递增/递减运算符.当它们在表达式中使用时,它们返回一个值,但是当它们用作独立语句时,它们不返回任何值.这是很好的解释的Windows PowerShell在行动由布鲁斯·帕耶特:
增量和减量运算符几乎不包含在PowerShell中,因为它们引入了一个问题.在C和C#等语言中,当您使用其中一个运算符作为语句时:$ a ++不会显示任何内容.这是因为C和C#中的语句不返回值.但是,在PowerShell中,所有语句都返回一个值.这导致了混乱.人们会写这样的脚本:
$sum=0
$i=0
while ($i -lt 10) { $sum += $i; $i++ }
$sum
Run Code Online (Sandbox Code Playgroud)
并惊讶地看到数字1到10显示.这是因为$ a ++返回了一个值,而PowerShell正在显示每个语句的结果.这太令人困惑了,我们几乎从语言中删除了这些操作符.然后我们想到了一个可撤销的陈述.基本上,这意味着某些类型的表达式在用作语句时不会显示.无效语句包括赋值和递增/递减运算符.当它们在表达式中使用时,它们返回一个值,但是当它们用作独立语句时,它们不返回任何值.同样,这是其中一个不会影响您使用PowerShell的细节,而不是让它按预期工作.(来源:Windows Powershell in Action)
| 归档时间: |
|
| 查看次数: |
302 次 |
| 最近记录: |