$f echo Wor-6ren">
gpt4 book ai didi

powershell - 为什么多行文件不能与其自身进行比较?

转载 作者:行者123 更新时间:2023-12-02 23:29:04 25 4
gpt4 key购买 nike

当我在同一个文件上两次使用gc(get-content),并使用-eq比较字符串时,为什么比较不相等?

$f = "C:\temp\test.txt"
echo Hello > $f
echo World >>$f # works if I uncomment this line

gc $f

# get the contents of the file twice and compare it to itself.
if ((gc $f) -eq (gc $f)) {
Write-Host "Hooray! The file is the same as itself."
} else {
Write-Host "Boo."
}

打印 Boo.,除非我注释掉第三行-问题似乎只出现在多行文件中。

(显然,实际上我不会将文件与其本身进行比较,在现实生活中,我正在比较两个可能具有相同内容的文件)。

我正在运行Powershell 2.0。

最佳答案

如果文件只有一行,那将起作用,但是如果有多行,则由于-eq作为数组运算符的方式而失败。为了使它按预期工作,您需要将两个对象都作为标量(单个项目)进行比较。一种实现方法是,如果您拥有V3或更高版本,则将-Raw开关添加到Get-Content。

if ((gc $f -raw) -eq (gc $f -raw))

这样会将整个文件读取为一个多行字符串。

要在V2中完成相同操作:
if ([io.file]::ReadAllText($f)) -eq ([io.file]::ReadAllText($f))

要么
if ([string](gc $f) -eq [string](gc $f))

关于powershell - 为什么多行文件不能与其自身进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20958357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com