PowerShell脚本中Git Submodule Foreach的双变量解析需求
PowerShell脚本变量解析问题解决方案
你的问题核心是PowerShell和git submodule foreach的变量解析优先级冲突:PowerShell会优先解析双引号内的所有变量,导致$name被当作PowerShell变量(而非git的环境变量)处理,而它在当前PowerShell上下文里不存在,所以无法正确解析。
解决方法很简单,只需要对$name进行转义,让PowerShell不要解析它,把它原封不动传给git:
param ( [string]$TAG ) git submodule foreach --recursive "echo `"$TAG on `$name`""
原理说明
$TAG没有转义,会被PowerShell正常解析为脚本传入的参数值;`$name中的反引号是PowerShell的转义符,它会告诉PowerShell不要解析$name,直接将$name字符串传递给git,这样git submodule foreach`就能正确识别并解析这个内置变量。
你也可以用单引号简化写法,效果一致:
param ( [string]$TAG ) git submodule foreach --recursive "echo '$TAG on `$name'"
内容的提问来源于stack exchange,提问作者Gigi
相关产品推荐
相关产品推荐

