Проверьте RapidCache!
Это часть RapidDisk. Он делает IO кэширование блоков против файлов (как и кэш linux), что делает его идеальным для ВМ!
Мне очень нравится предложение @Michel. Иногда вы действительно можете просто извлечь значение некоторых переменных для выполнения задачи на этом конкретном сервере с помощью BASH. Так,желаемые переменные известны. Использование этого подхода позволяет избежать множественных вызовов jq для установки значения для каждой переменной или даже использовать оператор чтения с несколькими переменными, в которых некоторые из них могут быть действительными и пустыми, что приводит к сдвигу значения (, который был моим проблема)
мой предыдущий подход, который привел к ошибке смещения значения, если.svID[ ].ID=""(sv получит значение slotID
-rd '\n' getInfo sv slotID <<< $(jq -r '(.infoCMD // "no info"), (.svID[].ID // "none"), (._id // "eeeeee")' <<< $data)
Если вы загрузили объект с помощью curl, вот мой подход к переименованию некоторых переменных в понятное имя для извлечения данных из массивов данных
использование eval и фильтров решит проблему одной строкой и создаст переменные с нужным именем
eval "$(jq -r '.[0] | {varNameExactasJson, renamedVar1:.var1toBeRenamed, varfromArray:.array[0].var, varValueFilter: (.array[0].textVar|ascii_downcase)} | to_entries |.[] |.key + "=\"" + (.value | tostring) + "\""' <<< /path/to/file/with/object )"
Преимуществом в этом случае является тот факт, что он будет фильтровать, переименовывать, форматировать все нужные переменные на первом этапе. Обратите внимание, что там есть.[0] | это очень распространено, если источник с сервера RESTFULL API с использованием GET, данные ответа как:
[{"varNameExactasJson":"this value", "var1toBeRenamed: 1500,....}]
Если ваши данные не из массива, т.е. объект типа:
{"varNameExactasJson":"this value", "var1toBeRenamed: 1500,....}
просто удалите начальный индекс:
eval "$(jq -r '{varNameExactasJson, renamedVar1:.var1toBeRenamed, varfromArray:.array[0].var, varValueFilter: (.array[0].textVar|ascii_downcase)} | to_entries |.[] |.key + "=\"" + (.value | tostring) + "\""' <<< /path/to/file/with/object )"
Это старый вопрос, но я решил поделиться, так как его было трудно найти