2017-09-28 1 views
1

J'ai un code qui renvoie une chaîne de jeton d'accès.Comment obtenir une chaîne spécifique à partir d'une variable à l'aide de Shell Script

#!/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 

La sortie donnée par cette commande est:

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

ie. la variable token contient le résultat ci-dessus. Ma question est de savoir comment obtenir le jeton d'accès 5048e7d38e73b4a809a4fcb219b63ae34f34f43f83d6663ffd777203afb5654ab seul et enregistrer dans une autre variable.

+0

Téléchargez et installez l'utilitaire de l'analyseur 'JSON' [' jq'] (https://stedolan.github.io/jq/download/) – Inian

Répondre

3

d'abord essayer jq, sinon possible, ceci est une solution de contournement à l'aide 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}') 

La façon de le faire dans jq serait de faire

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') 
+1

Pourquoi voudriez-vous nt pour analyser 'JSON' en utilisant' Awk'? Je pense qu'il serait sage de recommander des bonnes pratiques plutôt que de suggérer des raccourcis – Inian

+0

Eh bien c'est un JSON @Inian assez simple, bien sûr 'jq' est un très bon outil, mais vous devez prendre en considération le fait que certains gens ne peuvent pas installer les choses dans le système. – klashxx

+1

Juste point, mais il serait bon de vérifier avec OP sur ce point et de suggérer s'ils pourraient utiliser d'autres outils – Inian