У меня есть такой простой файл JSON,

{

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

}

Я хочу просто увеличить buildNumber на единицу в файле. Остальное содержимое должно оставаться как есть.

То, что я придумал до сих пор, ниже.

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

Но после запуска скрипта у меня осталось только обновленное значение в файле package.json, которое составляет всего 84. Остальное содержимое исчезло. Как это исправить?

1
JanithaR 21 Ноя 2018 в 10:07

2 ответа

Лучший ответ

Я просто поместил две приведенные ниже команды в две строчки, и все заработало так, как я хотел.

jq '.buildNumber += 1' 'package.json' > 'package.json.tmp'
cp 'package.json.tmp' 'package.json'
-1
JanithaR 22 Ноя 2018 в 14:57

Во-первых, нужно использовать следующий фильтр:

.buildNumber += 1

Во-вторых, как вы, очевидно, понимаете, было бы неразумно использовать> для перезаписи файла. Один из вариантов, который следует рассмотреть, допустимо ли это, - использовать coreutil's sponge. Другой вариант - сначала переименовать входной файл.

0
peak 21 Ноя 2018 в 07:14