вы должны находиться в директории, в которой вам нужно сделать tar.
in for i in ~/folderx/*; do...
loop do
cd $i
tar -czvf $i.tgz . -P
cd -
Это работает для меня.
Вы можете использовать индексацию квадратных скобок для всех объектов в 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"
в двойных кавычках, потому что на самом деле — это переменная оболочки, и ее следует заключать в кавычки, чтобы ее было безопасно использовать.