我正在尝试使用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")
答案 0 :(得分:0)
相反,请使用正确的json解析器。
在shell中,请查看jq。
示例,稍微调整一下:
#!/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
命令