【问题标题】:Store Codeship build ID in variable using GREP使用 GREP 将 Codeship 构建 ID 存储在变量中
【发布时间】:2016-09-27 20:39:50
【问题描述】:

我正在尝试使用 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")

【问题讨论】:

    标签: json bash curl grep codeship


    【解决方案1】:

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

    改为使用正确的 解析器。

    在 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 命令

    【讨论】:

    • 您好,谢谢您的回答,但我已经尝试过 jq,但它对我来说效果并不好,因为我实际上是在 Lambda 函数中使用它,您知道如何在 Lambda 函数中使用 jq?
    • 你能定义 Lambda 的级别吗?您是指 AWS 服务还是内联 python 或其他任何东西?
    • 这是 AWS 服务
    猜你喜欢
    • 2023-02-13
    • 2018-06-27
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    相关资源
    最近更新 更多