Powershell 中的 Git 命令:"git log $strVar" 不起作用
Git command in Powershell: "git log $strVar" does not work
在 PowerShell 中,下面的 git
命令不起作用
$strVar = "--graph --oneline"
git log $strVar
它returns:fatal: unrecognized argument: --graph --oneline
。为什么不起作用?
我注意到 space 与我的问题有关,因为这会起作用:
git log "--oneline"
但这行不通:
git log "--oneline "
git log "--oneline "
不起作用,因为 git 接收 --oneline
和尾随 space 作为单个参数。与您的 git log $strVar
相同,其中 git 接收 $strVar
作为参数。 PowerShell 适用于对象而不是字符串,因此在 PowerShell 中,您通常不会像那样将参数保存在字符串中,而是使用数组,然后 运行 使用 call operator &
命令
$params = "--graph", "--oneline" # Or '@("--graph", "--oneline")'
# '@()' denotes an array, '+' is an array concatenation
& git (@("log") + $params)
# Alternative way, the comma operator converts the operand to array
& git (,"log" + $params)
您也可以对单个字符串中的参数使用 Invoke-Expression,但前提是整个命令行很简单,因为如果有特殊字符,则需要进行一些转义
$params = "--graph --oneline"
Invoke-Expression ("git log " + $params)
iex "git log $params" # Alias of Invoke-Expression
另一个解决方案是使用Start-Process
Start-Process -FilePath git -ArgumentList (@("log") + $params)
saps git (,"log" + $params) # Alias
在 PowerShell 中,下面的 git
命令不起作用
$strVar = "--graph --oneline"
git log $strVar
它returns:fatal: unrecognized argument: --graph --oneline
。为什么不起作用?
我注意到 space 与我的问题有关,因为这会起作用:
git log "--oneline"
但这行不通:
git log "--oneline "
git log "--oneline "
不起作用,因为 git 接收 --oneline
和尾随 space 作为单个参数。与您的 git log $strVar
相同,其中 git 接收 $strVar
作为参数。 PowerShell 适用于对象而不是字符串,因此在 PowerShell 中,您通常不会像那样将参数保存在字符串中,而是使用数组,然后 运行 使用 call operator &
$params = "--graph", "--oneline" # Or '@("--graph", "--oneline")'
# '@()' denotes an array, '+' is an array concatenation
& git (@("log") + $params)
# Alternative way, the comma operator converts the operand to array
& git (,"log" + $params)
您也可以对单个字符串中的参数使用 Invoke-Expression,但前提是整个命令行很简单,因为如果有特殊字符,则需要进行一些转义
$params = "--graph --oneline"
Invoke-Expression ("git log " + $params)
iex "git log $params" # Alias of Invoke-Expression
另一个解决方案是使用Start-Process
Start-Process -FilePath git -ArgumentList (@("log") + $params)
saps git (,"log" + $params) # Alias