Необходимо получить значение id
, которое соответствует name='robot$deployer'
. Как можно избежать $
, чтобы jq
выбирал только идентификатор коррекции (1321) вместо обоих (1321 и 1326)? В настоящее время скрипт ниже с печатью обоих идентификаторов
[
{
"id": 1321,
"name": "robot$deployer",
"token": "",
"description": "deployer",
"project_id": 55,
"expires_at": 1590799816,
"disabled": false,
"creation_time": "2020-04-29T10:50:16.029882-07:00",
"update_time": "2020-04-29T10:50:16.029882-07:00"
},
{
"id": 1326,
"name": "robot$test",
"token": "",
"description": "test",
"project_id": 55,
"expires_at": 1590862956,
"disabled": false,
"creation_time": "2020-04-30T04:22:36.940445-07:00",
"update_time": "2020-04-30T04:22:36.940445-07:00"
}
]
тестовый скрипт
#!/bin/bash
export PROJECT_INFO='[ { "id": 1321, "name": "robot$deployer", "token": "", "description": "deployer", "project_id": 55, "expires_at": 1590799816, "disabled": false, "creation_time": "2020-04-29T10:50:16.029882-07:00", "update_time": "2020-04-29T10:50:16.029882-07:00" }, { "id": 1326, "name": "robot$test", "token": "", "description": "test", "project_id": 55, "expires_at": 1590862956, "disabled": false, "creation_time": "2020-04-30T04:22:36.940445-07:00", "update_time": "2020-04-30T04:22:36.940445-07:00" } ]'
ROBOT_LOGIN="robot\$deployer"
export ROBOT_ID=$(echo $PROJECT_INFO | jq --arg robot_name "$ROBOT_LOGIN" 'if .[].name == "robot$deployer" then .[].id else empty end')
echo "ROBOT_ID:" $ROBOT_ID
Обновлена рабочая версия скрипта , thx @ hobbs
export PROJECT_INFO='[ { "id": 1321, "name": "robot$deployer", "token": "", "description": "deployer", "project_id": 55, "expires_at": 1590799816, "disabled": false, "creation_time": "2020-04-29T10:50:16.029882-07:00", "update_time": "2020-04-29T10:50:16.029882-07:00" }, { "id": 1326, "name": "robot$test", "token": "", "description": "test", "project_id": 55, "expires_at": 1590862956, "disabled": false, "creation_time": "2020-04-30T04:22:36.940445-07:00", "update_time": "2020-04-30T04:22:36.940445-07:00" } ]'
ROBOT_LOGIN="robot\$deployer"
export ROBOT_ID=$(echo $PROJECT_INFO | jq --arg rl "${ROBOT_LOGIN}" '.[] | select(.name == $rl) | .id')
echo "ROBOT_ID:" $ROBOT_ID