更新存储在json文件中的版本号
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更新存储在json文件中的版本号相关的知识,希望对你有一定的参考价值。
我正在尝试编写一个shell脚本来增加存储在JSON文件中的版本的内部版本号。
{
/**
* The application's namespace.
*/
"name": "AppName",
/**
* The version of the application.
*/
"version": "1.0.0.23",
/**
* More comments.....
*/
....
}
如果变量已经在文件中,我已经测试了一种增加数字的简单方法:
version='1.0.0.23'
a=( ${version//./ } ) # replace points, split into array
((a[3]++)) # increment revision (or other part)
version="${a[0]}.${a[1]}.${a[2]}.${a[3]}" # compose new version
echo $version # outputs: 1.0.0.24
我查看了jq和jshon但是它们都不会解析JSON文件,因为它包含注释(app.json文件由Sencha Cmd自动生成)
如何使用awk / sed之类的东西读取版本属性并更新它? jsawk会更好吗?
更新我设法使用这个提取版本号:version=$( sed -n 's/.*"version": "(.*)",/1/p' app2.json )
所以现在我可以阅读版本并增加它。只需要现在就把它写回来。
使用awk
:
awk -F'["]' -v OFS='"' '/"version":/{
split($4,a,".");
$4=a[1]"."a[2]"."a[3]"."a[4]+1
}
;1' app.json
与IFS
和OFS
作为"
找到匹配"version":
的线。
split($4,a,".")
:split
第四场用.
作为分隔符并保存到阵列a
。
$4=a[1]"."a[2]"."a[3]"."a[4]+1
:用新的价值重新分配$4
。
1
:打印所有线条
如果输入行是"version": "1.0.0.23",
O / P将是"version": "1.0.0.24",
我继续尝试使用sed并设法生成这个:
# get the existing version number
ver=$( sed -n 's/.*"version": "(.*)",/1/p' app2.json ) # ver='1.0.0.43'
echo "Current version: $ver"
a=( ${ver//./ } ) # replace points, split into array
((a[3]++)) # increment revision (or other part)
newVer="${a[0]}.${a[1]}.${a[2]}.${a[3]}" # compose new version
echo "New version: $newVer" # newVer='1.0.0.44'
# write output
sed -i .temp "s/"version": "$ver"/"version": "$newVer"/g" app2.json
做的工作。
基于7171u的答案,这里是一个完整的单行程序,用补丁递增版本覆盖原始json文件:
awk -F'["]' -v OFS='"' '/"version":/{split($4,a,".");$4=a[1]"."a[2]"."a[3]+1};1' ./manifest.json > ./manifest2.json && mv ./manifest2.json ./manifest.json
这将从json文件获取当前版本,增加补丁版本位置,将其写入新文件,然后在第二个语句中,用新文件替换原始文件。
以上是关于更新存储在json文件中的版本号的主要内容,如果未能解决你的问题,请参考以下文章
解决未能加载文件或程序集“Newtonsoft.Json ...."或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)(代码片段
Oracle 数据库 - 使用UEStudio修改dmp文件版本号,解决imp命令恢复的数据库与dmp本地文件版本号不匹配导致的导入失败问题,“ORACLE error 12547”问题处理(代码片段