如何使用Shell脚本从变量中获取特定字符串

时间:2017-09-28 07:36:19

标签: bash shell sh

我有一个返回访问令牌字符串的代码。

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

此命令给出的输出是:

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

即。变量token包含上述结果。我的问题是如何单独获取访问令牌5048e7d38e73b4a809a4fcb219b63ae34f34f43f83d6663ffd777203afb5654ab并保存到另一个变量。

2 个答案:

答案 0 :(得分:3)

首先尝试jq如果不可能,这是使用CDate("01/09/2017") 的解决方法:

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}') 中执行此操作的方法是

jq

答案 1 :(得分:0)

我在bash中使用它来获取和使用令牌......

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%%\"*}

以后

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