2017-11-08 1 views
1

Erste jq Ausgabe in einzelnen Zeile mitErste jq Ausgabe in einzelne Zeile für JSON Ausgabe für JSON Ausgabe bash bash

ich zu TestRail API durch Bash-Skript aufrufen und unter Ausgabe curl und jq mit bekommen, später i Ich analysiere es und lege es in eine Datei. Es gibt mir Ergebnis fein aber Schlüssel in verschiedenen Zeilen, ich erwarte, dass ein Block Ergebnis in einer Zeile geben sollte. Kann mir bitte jemand helfen, in Single Line mit jq und bash auszugeben?

Ich versuchte jq -c und es funktioniert aber nur über CLI, über Bash-Skript-Datei schlägt es fehl. Ich bin mir nicht sicher, was falsch ist, wenn man anders läuft und offensichtlich müssen wir nur die Bash-Datei durchlaufen.

Code:

jsonOutput=`curl -u $user:$key -X GET -H 'Content-Type: application/json' --insecure --silent $url/index.php?/api/v2/get_results_for_run/$runID | jq -r` 

for runDetails in ${jsonOutput}; do 
    IFS="," 

    if [[ "${runDetails}" = "id" ]] || [[ "${runDetails}" = "status_id" ]]; then 
     runDetails=$(echo "${runDetails}" | sed 's/\"//g' | sed 's/{//g' | sed 's/}//g') 

     testcaseID=$(echo "${id}") 
     testcaseResult=$(echo "${test_id}") 
     echo -e "${testcaseID}\t${testcaseResult}" >> ${reportsFile} 
    fi 
done 

Aktuell:

"id": 425179, 
"test_id": 4713650 

"id": 425178, 
"test_id": 4713649 

Erwartet:

425179, 4713650 
425178, 4713649 

jq Ausgang:

[ 
    { 
    "id": 425179, 
    "test_id": 4713650, 
    "status_id": 5, 
    "created_by": 41, 
    "created_on": 1510161282, 
    "assignedto_id": null, 
    "comment": null, 
    "version": null, 
    "elapsed": null, 
    "defects": null, 
    "custom_step_results": [ 
     { 
    "expected": "", 
    "actual": "", 
    "status_id": 3 
     } 
    ], 
    "custom_severity": null 
    }, 
    { 
    "id": 425178, 
    "test_id": 4713649, 
    "status_id": 1, 
    "created_by": 41, 
    "created_on": 1510161195, 
    "assignedto_id": null, 
    "comment": null, 
    "version": null, 
    "elapsed": "10s", 
    "defects": null, 
    "custom_step_results": [ 
     { 
    "expected": "", 
    "actual": "", 
    "status_id": 3 
     } 
    ], 
    "custom_severity": null 
    } 
] 

Antwort

2

jq kann den JSON nur im gewünschten Format parsen: