/ usr / bin / jq: ошибка списка аргументов слишком длинная bash - PullRequest
1 голос
/ 22 января 2020

Я хочу заменить значение в образце json на более крупное чванство. json Содержимое файла слишком велико.

Error:
/usr/bin/jq: Argument list too long error bash 

работал над решением этой проблемы в течение нескольких дней и не может определить проблема здесь. это образец json файла:

{
   "name": "",
   "description": "",
   "context": "",
   "version": "",
   "provider": "cbs",
   "apiDefinition": "",
   "wsdlUri": null,
   "responseCaching": "Disabled",
   "cacheTimeout": 300,
   "destinationStatsEnabled": false,
   "isDefaultVersion": true,
   "transport":    [
      "http",
      "https"
   ],
   "tags": ["PROVIDER_","MIFE"],
   "tiers": ["Unlimited","Default","Silver","Subscription","Gold","Premium","Bronze"],
   "maxTps":    {
      "sandbox": 5000,
      "production": 1000
   },
   "visibility": "PUBLIC",
   "visibleRoles": [],
   "endpointConfig": "",
   "endpointSecurity":    {
      "username": "user",
      "type": "basic",
      "password": "pass"
   },
   "gatewayEnvironments": "Production and Sandbox",
   "sequences": [],
   "subscriptionAvailability": null,
   "subscriptionAvailableTenants": [],
   "businessInformation":    {
      "businessOwnerEmail": "BUSINESSOWNEREMAIL_",
      "technicalOwnerEmail": "TECHNICALOWNEREMAIL_",
      "technicalOwner": "TECHNICALOWNER_",
      "businessOwner": "BUSINESSOWNER_"
   },
   "corsConfiguration":    {
      "accessControlAllowOrigins": ["*"],
      "accessControlAllowHeaders":       [
         "authorization",
         "Access-Control-Allow-Origin",
         "Content-Type",
         "SOAPAction"
      ],
      "accessControlAllowMethods":       [
         "GET",
         "PUT",
         "POST",
         "DELETE",
         "PATCH",
         "OPTIONS"
      ],
      "accessControlAllowCredentials": false,
      "corsConfigurationEnabled": false
   }
}

это команда, которую я использую, и она выдает мне ошибку, которую я в качестве аргументов слишком большой.

swagger = $(cat swagger.json)

jq -r --arg swagger "$swagger" '.apiDefinition = $swagger' <<<"$json"

Может кто-нибудь помочь, пожалуйста!

swagger = $ (cat swagger. json)

1 Ответ

2 голосов
/ 22 января 2020

Q явно не говорит о том, как было установлено $swagger, но может показаться, что вместо использования --arg swagger $swagger было бы лучше использовать один из файловых параметров командной строки, возможно, в духе :

--argfile swagger swagger.json

Есть много альтернатив, но для их разумного изучения здесь было бы лучше, если бы вы предоставили хотя бы один полный, но очень крошечный пример. (Этот пример НЕ должен иллюстрировать ошибку « Список аргументов слишком длинный »!)

Предостережение

Если вы беспокоитесь, что опция --argfile устарела, тогда непременно используйте --slurpfile вместо этого, если оно есть у вашего jq, но обратите внимание, что последний параметр заключает содержимое файла в массив JSON, поэтому вам придется принять это во внимание.

Эти и другие варианты кратко представлены в официальной документации по https://stedolan.github.io/jq/manual/

...