在bash中执行perl脚本时,需要解析它';s JSON输出并将其放入变量中

在bash中执行perl脚本时,需要解析它';s JSON输出并将其放入变量中,bash,perl,Bash,Perl,我有一个用Bash编写的自动化脚本。我需要从中执行一个perl脚本,捕获/解析其输出的一个特定部分,并将其用作变量,以完成bash脚本的任务 例如: echo "Creating database for "$custname perl /home/dib/testing/addCustomer.cgi name=$custname prefix=$customerno perl脚本“addCustomer.cgi”将返回以下JSON输出: Content-Type: application/

我有一个用Bash编写的自动化脚本。我需要从中执行一个perl脚本,捕获/解析其输出的一个特定部分,并将其用作变量,以完成bash脚本的任务

例如:

echo "Creating database for "$custname
perl /home/dib/testing/addCustomer.cgi name=$custname prefix=$customerno
perl脚本“addCustomer.cgi”将返回以下JSON输出:

Content-Type: application/json; charset=UTF-8

{
   "recordcount" : 1,
   "status" : "OK",
   "statusText" : "Add Customer: 40:Testing",
   "customer" : [
      {
         "address" : "",
         "city" : "",
         "country" : "US",
         "description" : "",
         "email" : "",
         "endDate" : "0000-00-00 00:00:00",
         "frontendurl" : "",
         "phone" : "",
         "prefix" : "testing",
         "startDate" : "0000-00-00 00:00:00",
         "state" : "",
         "customerID" : "40",
         "subscriberName" : "Testing",
         "url" : "",
         "zip" : ""
      }
   ],
   "timestamp" : 1559163419
}

我需要捕获customerID号,将其粘贴到变量中,然后使用它完成bash脚本。这样的事情可能吗?我总是看到从bash到perl的解析或传递,但不是相反。

将其附加到perl命令中:

| sed 1d | jq -r '.customer[].customerID'
输出:

40 40
我假设只有一行标题。

您不能修改Perl脚本以仅返回id而不是完整的json吗?“修改Perl脚本以仅返回id”——或者为其添加一个命令行选项that@zdim:是的,这是修改它的最佳方式:)@choroba不,我不能修改perl脚本。我只是尝试自动化一个当前需要执行脚本的过程,注意customerID的值,然后使用不同的命令来完成任务;打印decode_json($)->{customer}[0]{customerID}。您需要使用
jq
命令来实现这一点,但如果您做了大量json工作,这是一个难以置信的工具,因此必须具备并且值得安装。这可以获得我需要的值,但我仍然需要将该值粘贴到变量中。尝试以下操作:
variable=$(perl…| sed…| jq…)