Немедленный ответ: использовать дополнительные кавычки
В jq .["20"]
двойные кавычки анализируются как синтаксис оболочки, а не как jq
синтаксис (цитирование оболочки является посимвольным: в кавычках можно переключать типы внутрибольшая строка).Используйте одинарные кавычки, чтобы защитить всю строку от модификации оболочкой:
$ echo '{"20":"twenty"}' | jq '.["20"]'
"twenty"
Поиск проблемы самостоятельно
Один из подходов к диагностике такого рода проблем - использование оболочки xtrace
средство, чтобы сказать оболочке, чтобы она возвращала вам командные строки:
$ set -x
$ echo '{"20":"twenty"}' | jq .["20"]
+ echo '{"20":"twenty"}'
+ jq '.[20]'
jq: error (at <stdin>:1): Cannot index object with number
Как видите, jq .["20"]
был проанализирован как идентичный jq '.[20]'