增加值并保存回文件

Increment value and save back to the file

我有一个像这样的简单 JSON 文件,

{

...
"version": "2.1.0",
"buildNumber": 83

}

我只想将文件中的 buildNumber 递增 1。其余内容应保持原样。

到目前为止我想出的是下面的内容。

jq -e '.buildNumber + 1' 'package.json' > 'package.json.tmp' && cp 'package.json.tmp' 'package.json'

但是在 运行 脚本之后,我只剩下 package.json 文件中的更新值,即 84。其余内容都没有了。我该如何解决这个问题?

首先,要使用的过滤器是:

.buildNumber += 1

其次,您显然已经意识到,使用 > 覆盖文件是不明智的。考虑是否可以接受的一种选择是使用 coreutil 的 sponge。另一种方法是先重命名输入文件。

我只是将下面的两个命令分成两行,它就像我想要的那样工作。

jq '.buildNumber += 1' 'package.json' > 'package.json.tmp'
cp 'package.json.tmp' 'package.json'