2017-11-28 7 views
0

こんにちは、複数のif条件を持つシェルスクリプトを使用してWebサービスをテストしています。 、失敗をカウントし、失敗の理由シェルスクリプトを使用してファイルから残りのWebサービスをテストする際の成功カウント、失敗回数、失敗の理由

success=0 
failure=0 

if curl -s --head --request DELETE http://localhost/bimws/delete/[email protected] | grep "200 OK" > /dev/null; then 
    success=$((success+1)) 
else 
echo "DeleteUser is not working"$'\r' >> serverLog.txt 
    failure=$((failure+1)) 
fi 

if curl -s --head --request GET http://localhost/bimws/get/[email protected] | grep "200 OK" > /dev/null; then 
    success=$((success+1)) 
else 
curl -s --head --request GET http://localhost/bimws/get/[email protected] > f1.txt 
echo "getUserDetails is not working"$'\r' >> serverLog.txt 
    failure=$((failure+1)) 
fi 

if curl -s -i -X POST -H "Content-Type:application/json" http://localhost/bimws/post/addProjectLocationAddress -d '{"companyid":"10","projectid":"200","addresstypeid":"5","address":"1234 main st","city":"san jose","state":"CA","zip":"989898","country":"United States"}' | grep "200 OK" > /dev/null; then 
    success=$((success+1)) 
else 
echo "addProjectLocationAddress is not working"$'\r' >> serverLog.txt 
    failure=$((failure+1)) 
fi 

echo $success Success 
echo $failure failure 

しかし、私はすべての私の私が実行しないどのようなシェルスクリプトを使用してWebサービスと成功回数が含まれているweb_services.txtと呼ばれるファイルを持っているように、ファイルからWebサービスをテストするために楽しみにしていますカウントと失敗理由

web_services.txt

すべてが異なる呼び出しが削除され、すべての

http://localhost/bimws/delete/[email protected] 


http://localhost/bimws/get/[email protected] 



http://localhost/bimws/post/addProjectLocationAddress -d '{"companyid":"10","projectid":"200","addresstypeid":"5","address":"1234 main st" 
,"city":"san jose","state":"CA","zip":"989898","country":"United States"}' 
+0

使用-wそれをエコーし​​ます。 –

+0

私はこれに新しいです。私はあなたに詳細を教えてくれませんでした –

答えて

1

ファーストをGETとPOST、あなたの現在のコードが正しく空行を扱っていません。あなたはそれらをスキップする必要があります。

あなたの行にはすでにシェルコマンドが含まれています。それらのカールを実行することは意味をなさない。代わりに、これらのコマンドを評価する必要があります。

その後、あなたはそれは要求が-fを追加することで成功したかどうかを報告するようにカールを変更する必要があります成功していないものをカウントした後、ファイルのHTTP終了コードを書くための

FILE=D:/WS.txt 
success=0 
failure=0 
while read LINE; do 
    if test -z "$LINE"; then 
     continue 
    fi 
    if eval $(echo "$LINE" | sed 's/^curl/curl -f -s/') > /dev/null; then 
     success=$((success+1)) 
    else 
     echo $LINE >> aNewFile.txt 
     failure=$((failure+1)) 
    fi 
done < $FILE 
echo $success Success 
echo $failure failure 
+0

curlコマンドが1行以上の場合、上記のコードは1行でうまく動作し、2行目は失敗カウントとしてカウントされます。 –

+0

if curl -s -i -X POST -H "Content-Type:application/json" http:// localhost/bimws/post/addProjectLocationAddress -d '{"companyid": "10"、 "projectid": "200" "addresstypeid": "5"、 "address": "1234 main st"、 "city": "san jose"、 "state": "CA"、 "zip": "989898"、 "country": "United States "} '| grep "200 OK">/dev/null;その後、 成功は= $((成功+ 1))他 エコーは、deleteuserが動作していない> aNewFile.txt 失敗= $((故障+ 1)) Fiの –

+0

私は答えた時には、 'WS.txt'はなかったです単一行のコマンドだけが含まれています。複数行のコマンドが含まれている場合、単純な 'read'ループは実行しません。代わりに、最初にコマンドを解析し、上記のコードでループの内部を実行する必要があります。しかし、それは本当に別の無関係の問題です。 – phihag

関連する問題