jq 命令的执行方式不同 - 一个成功,另一个不成功

jq command executes differently - one successfully and the other is not

我是运行这个命令:

{{ aws ec2 describe-availability-zones --region ca-central-1 | jq '.AvailabilityZones[]|(.ZoneName)}}'

2 台相同的 MacO 和一台亚马逊 Linux。

遇到此问题的 MacO 显示此错误:

parse error: Invalid numeric literal at line 1, column 18

但是,Amazon 和其他 MacOS 显示正确的输出

请帮帮我!这让我发疯

此错误消息表明通过管道传输到 jq 的输入无效 JSON。由于此输入直接来自 aws ec2 describe-instances 命令的输出,因此看起来它没有发出 JSON,或者它发出其他文本 以及 作为 JSON.

诊断此问题的最快方法是找出 aws 命令发出的文本。

一个可能的原因可能是您通过环境变量 (AWS_DEFAULT_OUTPUT) 或配置文件(例如 ~/.aws/config)将其配置为输出 YAML 或文本或表格。 (事实上​​ ,我认为这很可能。如果我将错误消息设置为输出 YAML,我可以将错误消息精确地复制到列号。)你可以通过 explicitly specifying --output json.[=18 来排除这种情况=]

除此之外,我建议您将这些机器相互比较。例如,在每台机器上试一下,看看在奇数机器上有什么不同:

echo Versions:
aws --version
jq --version

echo Environment:
env | grep '^AWS_'

echo AWS configuration:
aws configure list

echo AWS config file:
cat ~/.aws/config