conta um caractere específico na saída de onda

1

A saída de curl no meu Bash é:

object(\Response\)#1399 (3) {
  ["httpResponse"]=>
  object(GuzzleHttp\Psr7\Response)#1084 (6) {
    ["reasonPhrase":"GuzzleHttp\Psr7\Response":private]=>
    string(2) "OK"
    ["statusCode":"GuzzleHttp\Psr7\Response":private]=>
    int(200)
    ["headers":"GuzzleHttp\Psr7\Response":private]=>
    array(11) {
     ....
     ....
     ....
     ....
    ["status"]=>
    string(2) "ok"
  }
}

Meu código é:

while read ID; do
curl  -X -d "http://localhost/new.php?media_id="$ID"&submit=Submit"

done < ~/ids.txt

Além disso, adiciono isso:

curl -s  -X -d "http://localhost/new.php?media_id="$ID"&submit=Submit" | grep -c 'string(2) "ok"'

e a saída foi 1 . Eu quero contar todas as saídas e mostre-me o exemplo Success : 12

    
por Mehran 12.04.2018 / 19:35

1 resposta

0

Você pode fazer isso com grep -c :

f=0
s=0
while read ID; do
    var=$(curl  -X -d "http://localhost/new.php?media_id="$ID"&submit=Submit")
    grep -q 'string(2) "ok"' <<<"$var" && ((s++))
    grep -q 'string(2) "notok"' <<<"$var" && ((f++))
    echo "$var"
done < ~/ids.txt
echo "Success : $s"
echo "Failed : $f"
    
por 12.04.2018 / 19:39