Передача переменной в jq для редактирования файла json

вы должны находиться в директории, в которой вам нужно сделать tar.

in for i in ~/folderx/*; do... loop do

cd $i
tar -czvf $i.tgz . -P
cd -

Это работает для меня.

1
19.04.2019, 13:59
1 ответ

Вы можете использовать индексацию квадратных скобок для всех объектов в jq, поэтому [$name]работает для того, что вы пытаетесь:

jq --arg key1 true --arg name "$name" '.Linux.script_executed[$name] = $key1...' 

Использование квадратных скобок не очень хорошо задокументировано в руководстве , из-за чего кажется, что вы можете использовать только .[xyz], но ["x"]работает везде, где .xимел бы такую ​​же длину. так как это неправильно в начале выражения (, то есть .a.xи .a["x"]одинаковы, но ["x"]является конструкцией массива ).

Обратите внимание на использование одинарных кавычек над -, чтобы Bash не пытался интерпретировать $nameи $key1как переменные оболочки. Вы должны держать --arg name "$name"в двойных кавычках, потому что на самом деле — это переменная оболочки, и ее следует заключать в кавычки, чтобы ее было безопасно использовать.

4
27.01.2020, 23:41

Теги

Похожие вопросы