saugandh k
saugandh k

Reputation: 1078

How to get a specific string from a variable using Shell Script

I have a code which returns an access token string.

#!/bin/bash
token=$(curl --globoff -X POST "https://example.com/token" -F 'grant_type=client_credentials' -F 'client_id=d86fc9b690963b8dda602bd26f33454r457e9024a4ecccf4c3bbf66ffcbc241b' -F 'client_code'='ff148c56118728b62c9f2ew3e4r009a7a1c645276b70611fa32fa055b9944934')
echo "$token" > Token.txt

The output given by this command is :

{
    "access_token": "5048e7d38e73b4a809a4fcb219b63ae34f34f43f83d6663ffd777203afb5654ab",
    "token_type": "bearer",
    "expires_in": 7200
}

ie. the variable token contains the above result. My question is how to get the access token 5048e7d38e73b4a809a4fcb219b63ae34f34f43f83d6663ffd777203afb5654ab alone from this and save to another variable.

Upvotes: 1

Views: 1657

Answers (2)

Veehell
Veehell

Reputation: 1

I am using this in bash to get and use the token ...

access_tok=$(curl -s -X POST -d "client_id=$(< "$LOGON_HOME/client_id" )&client_secret=$(< "$LOGON_HOME/client_secret")&grant_type=client_credentials" "${TOKEN_URL}" )
access_tok=${access_tok#*access_token\":\"}
access_tok=${access_tok%%\"*}

and later

curl -l -s -O -H "Authorization: Bearer ${access_tok}" "${FILE_URL}"

Upvotes: 0

Juan Diego Godoy Robles
Juan Diego Godoy Robles

Reputation: 14975

First try jq, if not possible, this is a workaround using awk:

access_token=$(curl --globoff -X POST "https://example.com/token" \
                    -F 'grant_type=client_credentials' \
                    -F 'client_id=d86fc9b690963b8dda602bd26f33454r457e9024a4ecccf4c3bbf66ffcbc241b' \
                    -F 'client_code'='ff148c56118728b62c9f2ew3e4r009a7a1c645276b70611fa32fa055b9944934'|\
                    awk -F\" '/access_token/{print $4}')

The way to do this in jq would be to do

access_token=$(curl --globoff -X POST "https://example.com/token" \
                    -F 'grant_type=client_credentials' \
                    -F 'client_id=d86fc9b690963b8dda602bd26f33454r457e9024a4ecccf4c3bbf66ffcbc241b' \
                    -F 'client_code'='ff148c56118728b62c9f2ew3e4r009a7a1c645276b70611fa32fa055b9944934'|\
                    jq -r '.access_token' )

Upvotes: 3

Related Questions