【问题标题】:Shell/bash script for invoking curl用于调用 curl 的 Shell/bash 脚本
【发布时间】:2015-11-27 20:23:07
【问题描述】:

如果我在 CSV 文件中的某个字段中遇到失败,我需要调用 Rest api 调用:

我有一个 CSV 文件,如下所示:

项目 api_name api_result 响应

a xyz PASS 200,日期:2015 年 11 月 16 日星期一 20:52:26

b abc FAIL 501,日期:2015 年 11 月 17 日星期一 20:52:26

c mas PASS 200,日期:2015 年 11 月 18 日星期一 20:52:26

我需要一个 shellbash 脚本来执行以下操作

1) 每次在 api_result 中出现 FAIL 时调用 curl。

2) 将值从 CSV 传递到我的 curl 命令。示例我需要将 CSV 中的 api_name 的值作为摘要传递到我的数据中,如下所示:

请求:

curl POST --data {see below} -H "Content-Type: application/json" http://localhost:8090/rest/api/2/issue/

数据

{
    "fields": {

       "summary": **$api_name**

   }
}

我也愿意接受替代选项,而不是 shell/bash 脚本。我尝试使用 shell 执行此操作的原因是因为我使用的是 Jenkins。

【问题讨论】:

    标签: bash shell api rest csv


    【解决方案1】:

    您描述的输入并不是真正的 CSV 格式,但假设输入与您显示的一样并且位于名为 input.txt 的文件中,以下概述了您可以采取的一种方法(使用 bash):

    while read project api_name api_result etc
    do
        if [ "$api_result" = "FAIL" ] ; then
          echo curl ... $'\'{"fields": { "summary": "' "$2" $'" }}\''
        fi
    done < <(cat input.txt)
    

    这假定项目和 api_name 作为输入行的前两个标记出现。如果不是这种情况,那么您可能需要考虑首先修改 input.txt,使其采用 TSV(制表符分隔值)格式。

    【讨论】:

    • 感谢工作。但是,现在我遇到了以下情况。
    猜你喜欢
    • 1970-01-01
    • 2014-06-05
    • 2015-11-13
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-29
    • 2015-05-17
    相关资源
    最近更新 更多