Указать переменную для jq в bash скрипте

Накидал небольшой скрипт, но не получается подставить переменную для jq

#!/bin/bash

filejson=data.json

actpin=$(cat $filejson | jq -r '.["8100417186"].actpin')
respin=$(cat $filejson | jq -r '.["8100417186"].respin[0]')

echo $1
echo "Активный пинкод: $actpin"
echo "Резервный пинкод: $respin"

Как подставить вместо 8100417186 значение переменной $1 ? А то вместо значений получаю null


Ответы (1 шт):

Автор решения: Alexey Ten

Через параметр --arg.

https://jqlang.org/manual/

#!/bin/bash

filejson=data.json

actpin=$(cat $filejson | jq -r --arg id "$1" '.[$id].actpin')
respin=$(cat $filejson | jq -r --arg id "$1" '.[$id].respin[0]')

echo $1
echo "Активный пинкод: $actpin"
echo "Резервный пинкод: $respin"

Или честно закрывать и открывать кавычки

#!/bin/bash

filejson=data.json

actpin=$(cat $filejson | jq -r '.["'$1'"].actpin')
respin=$(cat $filejson | jq -r '.["'$1'"].respin[0]')

echo $1
echo "Активный пинкод: $actpin"
echo "Резервный пинкод: $respin"
→ Ссылка