下面的我的powershell命令
$BUILD_SOURCEVERSIONMESSAGE= (Get-Item Env:\BUILD_SOURCEVERSIONMESSAGE)
以这种格式返回输出
2018-10-26T01:08:44.7409834Z BUILD_SOURCEVERSIONMESSAGE Merge 569594f057e2c4bd0320159855e81e14216ca66f into 41107d0f0db5ef2986831db2182280e0c...
我正在尝试从上面的输出中解析字符串 569594f057e2c4bd0320159855e81e14216ca66f 。
我尝试将输出转换为字符串,将其在空白处分割,然后按以下方式访问数组的第二个元素。但是,我得到空字符串。如何访问所需的字符串?
echo $BUILD_SOURCEVERSIONMESSAGE
$out = $BUILD_SOURCEVERSIONMESSAGE | Out-String
$out1 = $out.split()
echo $out1[1]
答案 0 :(得分:2)
命令Get-Item Env:\BUILD_SOURCEVERSIONMESSAGE
的简洁形式-即检索环境变量BUILD_SOURCEVERSIONMESSAGE
的值-为表达式$env:BUILD_SOURCEVERSIONMESSAGE
。
使用Powershell的-split
运算符的一元形式,将输入按任何非空的空白行进行拆分(在剥离前导和尾随空白时),您可以按以下方式获得所需的输出:
PS> (-split $env:BUILD_SOURCEVERSIONMESSAGE)[3]
569594f057e2c4bd0320159855e81e14216ca66f
索引3
提取通过-split
进行令牌化后得到的第4个令牌。
如果要对结果使用字符串插值:
$prefix = 'before<'; $postfix = '>after'
$val = (-split $env:BUILD_SOURCEVERSIONMESSAGE)[3]
# Output a synthesized string that applies a pre- and postfix, using
# {...} to enclose variable names to avoid ambiguity.
"${prefix}${val}${postfix}"
以上结果:
before<569594f057e2c4bd0320159855e81e14216ca66f>after