我花了很长时间试图解决这个谜语。
我有一个名为API_ID的shell变量,我使用jq
从json解析ludo$ echo $API_ID
> "ucjj72orp1"
为什么当我像这样复制粘贴时它可以正常工作:
aws apigateway get-resources --rest-api-id "ucjj72orp1"
并且像这样我收到错误:
aws apigateway get-resources --rest-api-id $API_ID
An error occurred (NotFoundException) when calling the GetResources operation: Invalid REST API identifier specified 420257254224:"ucjj72orp1"
答案 0 :(得分:1)
您需要在-r
命令中使用jq
选项。这样就可以在没有双引号的情况下获取原始数据。
如果设置myvar=$(jq '...')
,变量将设置为包含周围双引号的shell字符串。
如果在内联shell命令中复制/粘贴字符串,shell会将双引号解释为字符串分隔符,因此它可以正常工作。