Я пытаюсь написать скрипт bash, который анализирует файл JSON приза nobel.Первый аргумент - это год, а второй - категория.
set -- 2000 physics # set $1 to 2000 and $2 to physics
jq -cr --argjson y "$1" --arg c "$2" \
'.prizes[] | select(.category == $c)| select(.year == $y )' <<'EOF'
{"prizes": [
{"category": "math", "year": "1999"},
{"category": "physics", "year": "2000"}]}
EOF
... не имеет выходных данных, тогда как он должен вывести одну строку с
{"category":"physics","year":"2000"}
Однако, только из категории, полученной из переменной, она работает:
set -- physics # set $1 to physics
jq -cr --arg c "$1" \
'.prizes[] | select(.category == $c)| select(.year == "2000" )' <<'EOF'
{"prizes": [
{"category": "math", "year": "1999"},
{"category": "physics", "year": "2000"}]}
EOF
... правильно выдает строку, указанную выше.
Таким образом, только числовой год имеет проблемы с прохождением -- какова бы ни была проблема, она не относится к категории.