使用GREP将Codeship构建ID存储在变量中

时间:2016-09-27 20:39:51

标签: json bash curl grep codeship

我正在尝试使用grep来搜索JSON输出,我使用curl命令从特定的codeship构建返回数据,我想使用GREP将所述ID值存储在变量中。但是,在我运行命令并尝试将变量的值回显为空白之后。

以下是命令:

export API_KEY=abc123
export PROJECT_ID=123456
export LAST_BUILD_ID=$(curl -s https://codeship.com/api/v1/projects/$PROJECT_ID.json?api_key=$API_KEY | grep -Eo '"builds":\[{"id":\d+' | grep -Eo --color=never '\d+' | tail -1)
export LAST_BUILD_URL=$(echo "https://codeship.com/api/v1/builds/$LAST_BUILD_ID/restart.json?api_key=$API_KEY")

1 个答案:

答案 0 :(得分:0)

我的回复:从不使用来解析

相反,请使用正确的解析器。

在shell中,请查看

示例,稍微调整一下:

#!/bin/bash

API_KEY=abc123
PROJECT_ID=123456
html=$(curl -s https://codeship.com/api/v1/projects/$PROJECT_ID.json?api_key=$API_KEY)
LAST_BUILD_ID=$(jq '.builds | .[] | .never' <<< "$html") # just guessing
LAST_BUILD_URL=$(echo "https://codeship.com/api/v1/builds/$LAST_BUILD_ID/restart.json?api_key=$API_KEY")

注意

如果您提供JSON,我将能够更加具体地使用jq命令