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
我是运行这个命令:
{{ 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