gpt4 book ai didi

windows - 将 git log 的输出分配给 powershell 变量

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

我想将 git log 的输出分配给一个变量,输出只进入屏幕并且变量为空。

$log = Push-Location $tempRepo;git init -q;git remote add origin ssh://git@git.weblnk.silverlnka.net/gxp/$repo;git fetch origin $branch -q;git log "$prevCommit..origin/$branch" --name-only --pretty=format: --full-history;Pop-Location

$log.GetType()

另外我想做的是创建一个数组,其中包含所有行,不包括显示为空的行。

最佳答案

要在 PowerShell 中捕获多个语句的输出,请将它们包含在脚本块 ( { ... } ) 中并使用 & 调用它 (或使用 ,如果您希望代码直接在调用者的范围内运行,但这与调用外部程序(例如 git )没有区别):

$log = & { Push-Location $tempRepo;git init -q;git remote add origin ssh://git@git.weblnk.silverlnka.net/gxp/$repo;git fetch origin $branch -q;git log "$prevCommit..origin/$branch" --name-only --pretty=format: --full-history;Pop-Location }

如果您还需要从外部程序捕获 stderr 输出 git , 追加 2>&1 | % ToString到电话,但请注意 git log通常只输出到标准输出,所以不需要额外的努力。

这是一个 cmd.exe 的简单示例生成 std​​out 和 stderr 输出的命令,以及如何在 PowerShell 变量中捕获两者。
$out = cmd /c 'ver & nosuch' 2>&1 | % ToString

笔记:
  • & { ... } 的上下文中, 您可以免费申请 2>&1 | % ToString到整个命令组( & { foo.exe; <# ...#> } 2>&1 | % ToString );或到内部的单个命令 ( & { foo.exe 2>&1 | % ToString; <# .. #> } )
  • 2>&1可能会产生意想不到的副作用 - 见 this answer背景信息。


  • what I would like to do is create an array holding all lines excluding lines that appear empty.



    如果外部程序输出包含多于 1 行,PowerShell 会自动在单个行的数组中捕获输出 .

    要简单地从这样的数组中删除空行,请使用:
    # Assume that $out contains output captured from an external program.
    @($out) -ne '' # returns sub-array of non-empty lines.

    至于 你试过什么 :

    $log = Push-Location $tempRepo;git init -q;git remote add origin ssh://git@git.weblnk.silverlnka.net/gxp/$repo;git fetch origin $branch -q;git log "$prevCommit..origin/$branch" --name-only --pretty=format: --full-history;Pop-Location



    因为你的命令行是由多个组成的, ; -分隔语句,什么 $log = ... captures 只是第一条语句的输出, Push-Location $tempRepo - 从 Push-Location不产生任何输出, $log最终有效 $null .

    关于windows - 将 git log 的输出分配给 powershell 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59938973/

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