我正在尝试制作版本增量脚本。所以我有一个文件manifest.json
,它有预定义的行(例如45行)。
$1
参数是文件名
$2
参数是新版本号(例如0.3.5.29
)
输入类似于$ BumpVersion.sh manifest.json 0.15.2.34
我需要替换例如"version": "0.2.0.1",
与"version": "0.2.1.0",
- 编辑 -
哦,我忘了,版本并不总是0.2.1.5
,它可以是0.3
我知道行号和行内容,我基本上只需要替换数字。 我在Windows上的Git-Bash中这样做,如果可能的话,它应该在Linux和Unix上运行。
(我从未使用过bash脚本,但我需要它用于跨平台支持)
答案 0 :(得分:2)
应该是一个简单的sed
脚本。 (我假设你的报价是必需的):
file="VERSION.json"
new_version="0.2.1.0"
sed -i "s/\"version:\" \"[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\"/\"version:\" \"$new_version\"/" $file
但是,我不喜欢这个。相反,您应该有一个模板,并通过替换像%VERSION%
这样的已知字符串来重写模板。例如,您有一个名为 VERSION.json.template 的文件:
file="version.json.template"
new_version="1.2.2.1"
sed "s/%VERSION%/$new_version/" > "${file%.template}"
实施起来更简洁,更简单。
${file%.template}
从文件名中删除.template
后缀。如果您正在使用版本控制系统,则不会在每次编译时保存version.json
文件的新版本。相反,您只需将其作为标准构建例程的一部分,该例程应包含 clean 机制以删除不需要的version.json
文件。
如果您使用像Ant这样的构建系统,您可以使用其各种任务(如复制/过滤任务)来构建并将此文件复制到您的网页的其他位置。
答案 1 :(得分:0)
您的BumpVersion.sh脚本可能如下所示
#!/bin/sh
sed -i "/\(\"version\":\).*/\1 \"$2\"/" "$1"