首页 > 解决方案 > /usr/bin/jq:参数列表太长错误bash

问题描述

我想从较大的 swagger.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"

任何人都可以请帮助!

招摇= $(猫招摇.json)

标签: bashjq

解决方案


Q 没有明确说明是如何$swagger设置的,但似乎--arg swagger $swagger最好使用面向文件的命令行选项之一,而不是使用你,也许是这样的:

--argfile swagger swagger.json

有很多替代方案,但要在这里明智地探索这些,最好提供至少一个完整但非常微小的示例。(示例不必说明“参数列表太长”错误!)

警告

如果您担心该--argfile选项已被弃用,那么--slurpfile如果您有该选项,请务必使用jq它,但请注意后一个选项将文件内容包装到 JSON 数组中,因此您必须考虑到这一点。

这些和其他选项都在https://stedolan.github.io/jq/manual/的官方文档中简洁地呈现


推荐阅读