谁能解释以下两句话之间的区别?
gc -ReadCount 2 .\input.txt| % {"@@" + $_}
(gc -ReadCount 2 .\input.txt)| % {"@@" + $_}
我正在使用以下文件作为上述命令的输入。
input.txt
1
2
输出
gc -ReadCount 2 .\input.txt| % {"@@" + $_}
@@ 1 2
(gc -ReadCount 2 .\input.txt)| % {"@@" + $_}
@@ 1
@@ 2
如果输入文件包含两个以上的记录,则两个记录都给出相同的输出。
我可以修改我的代码来实现我想要的,但是我只是想知道为什么这两个给出不同的输出。
我在Google上搜索了该信息,但未找到任何答案。
编辑1
命令2的输出不是错误的,当我指定“-ReadCount 2”时,它应该一次传送两行,这意味着foreach循环应仅使用$ [0] = 1重复一次(因为输入仅包含2行) ,$ [1] = 2,所以当我打印“@@” + $ _时,应该像command1一样打印“@@ 1 2”。
最佳答案
gc -ReadCount 2 .\input.txt| % {"@@" + $_}
将内容读取为[String]-表示先添加“@@”,然后再添加整个文本文件(foreach循环运行一次)
(gc -ReadCount 2 .\input.txt)| % {"@@" + $_}
将内容读取为[Array]并评估其每一行,然后在其后添加“@@”和每一行的内容(foreach循环运行两次)
-ReadCount
参数用于将数据作为一个块分割成一行行,主要用于提高性能,因此-ReadCount 3
将显示@@1 2 3
@@4 5 6
@@7
和
-ReadCount 4
将显示:@@1 2 3 4
@@5 6 7
关于powershell - 在PowerShell脚本中使用括号?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34249577/