gpt4 book ai didi

svn - 如何将当前的 powershell 管道对象 "$_"作为命令行参数传递?

转载 作者:行者123 更新时间:2023-12-04 18:25:43 24 4
gpt4 key购买 nike

我正在尝试在一组管道文件上设置所有 svn:property:

dir * -include *.cs | Select-String -simplematch -pattern "HeadURL$" | select filename | svn propset svn:keywords "HeadURL Id LastChangedBy LastChangedRevision" $_

我收到以下错误:
svn: Try 'svn help' for more info
svn: Explicit target required ('HeadURL Id LastChangedBy LastChangedRevision' interpreted as prop value)

问题是, $_ 没有传递到 svn propset ...

该怎么办?

最佳答案

对于 $_要获得一个值,您必须在实际设置的上下文中使用它。对于您的特定情况,这意味着您必须结束对 svn 的调用。成ForEach-Object小命令:

dir * -include *.cs | Select-String -simplematch -pattern "HeadURL$" | select filename | % { svn propset svn:keywords "HeadURL Id LastChangedBy LastChangedRevision" $_ }

(为简洁起见,我在这里使用了 % 别名)

里面 ForEach变量 $_有值(value),可以使用。

但是,我已经看到了一些用途,其中当前管道对象在管道进入非 cmdlet 时附加到程序的参数。不过,到目前为止,我还没有完全理解这一点。

但是要了解您在这里做什么:您正在尝试设置 svn:keywords在使用其中之一的每个文件上。一种可能更健壮和可读的方法是实际过滤您正在扫描的列表:
gci * -inc *.cs |
Where-Object {
(Get-Content $_) -match 'HeadURL$'
}

(可能有效,尚未测试)

然后,您可以继续将其管道化到 foreach 中:
| ForEach-Object {
svn ps svn:keywords "HeadURL Id LastChangedBy LastChangedRevision" $_.FullName
}

此外,在这里您可以访问文件对象的所有属性,而无需依赖对象 Select-String给你。

关于svn - 如何将当前的 powershell 管道对象 "$_"作为命令行参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1159279/

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