Powershell 增量值 0.0.1
Powershell Increment value by 0.0.1
我有一个变量,returns 值来自 json:
$version = (Get-Content 'package.json' | ConvertFrom-Json).version
此值始终采用 x.x.x 格式。它可以是 0.0.3 或 1.123.23 值。
我的问题是 - 如何增加唯一的补丁值?例如。转换后我需要有 0.0.4 或 1.123.24 输出值。
C:\> $v = "1.2.3"
C:\> $(($v -split "\.")[0..1] + "$([int](($v -split '\.') |Select-Object -Index 2) +1)") -join "."
转换为 [version]
对象:
# read existing version
$version = [version](Get-Content 'package.json' | ConvertFrom-Json).version
# create new version based on previous with Build+1
$bumpedVersion = [version]::new($version.Major, $version.Minor, $Version.Build + 1)
或者,手动拆分字符串:
$major,$minor,$build = $version.Split('.')
# increment build number
$build = 1 + $build
# stitch back together
$bumpedVersion = $major,$minor,$build -join '.'
补充 with a concise alternative based on the :
# PowerShell [Core] only (v6.2+) - see bottom for Windows PowerShell solution.
PS> '0.0.3', '1.123.3' -replace '(?<=\.)[^.]+$', { 1 + $_.Value }
0.0.4
1.123.4
Regex (?<=\.)[^.]+$
匹配版本号的最后一个组成部分(匹配中不包括前面的 .
)。
Script block { 1 + $_.Value }
替换该组件,其值增加 1。
有关增加 任何 版本号组件的解决方案,包括正确处理 [semver]
版本号,请参阅 this answer。
在WindowsPowerShell中,不支持基于脚本块的-replace
语法,解决方案比较麻烦,因为它需要直接使用 .NET System.Text.RegularExpressions.Regex
类型:
PS> '0.0.3', '1.123.3' | foreach {
[regex]::Replace($_, '(?<=\.)[^.]+$', { param($m) 1 + $m.Value })
}
0.0.4
1.123.4
试试这个:
$build = [int]($version.split(".")[2])+1
$bumpedversion = $version.split(".")[0], $version.split(".")[1], $build -join "."
我有一个变量,returns 值来自 json:
$version = (Get-Content 'package.json' | ConvertFrom-Json).version
此值始终采用 x.x.x 格式。它可以是 0.0.3 或 1.123.23 值。
我的问题是 - 如何增加唯一的补丁值?例如。转换后我需要有 0.0.4 或 1.123.24 输出值。
C:\> $v = "1.2.3"
C:\> $(($v -split "\.")[0..1] + "$([int](($v -split '\.') |Select-Object -Index 2) +1)") -join "."
转换为 [version]
对象:
# read existing version
$version = [version](Get-Content 'package.json' | ConvertFrom-Json).version
# create new version based on previous with Build+1
$bumpedVersion = [version]::new($version.Major, $version.Minor, $Version.Build + 1)
或者,手动拆分字符串:
$major,$minor,$build = $version.Split('.')
# increment build number
$build = 1 + $build
# stitch back together
$bumpedVersion = $major,$minor,$build -join '.'
补充
# PowerShell [Core] only (v6.2+) - see bottom for Windows PowerShell solution.
PS> '0.0.3', '1.123.3' -replace '(?<=\.)[^.]+$', { 1 + $_.Value }
0.0.4
1.123.4
Regex
(?<=\.)[^.]+$
匹配版本号的最后一个组成部分(匹配中不包括前面的.
)。Script block
{ 1 + $_.Value }
替换该组件,其值增加 1。
有关增加 任何 版本号组件的解决方案,包括正确处理 [semver]
版本号,请参阅 this answer。
在WindowsPowerShell中,不支持基于脚本块的-replace
语法,解决方案比较麻烦,因为它需要直接使用 .NET System.Text.RegularExpressions.Regex
类型:
PS> '0.0.3', '1.123.3' | foreach {
[regex]::Replace($_, '(?<=\.)[^.]+$', { param($m) 1 + $m.Value })
}
0.0.4
1.123.4
试试这个:
$build = [int]($version.split(".")[2])+1
$bumpedversion = $version.split(".")[0], $version.split(".")[1], $build -join "."