我想運行一個命令,然後檢查字符串「200 OK」的結果。如何在bash腳本中解析命令的結果
到目前爲止,我有以下bash腳本:
for i in $(seq 1 50)
do
printf "i is: $i\n"
RESULTS="$(curl -i -H "Accept: application/json" -X GET http://localhost/test/store/widget/123 | grep -ne "200 OK")"
if [ $RESULTS -eq 0 ]; then
echo "GET failed with $RESULTS"
break
else
echo "we're good"
fi
done
當我運行上面的腳本,我得到如下結果:
i is: 1
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 85 100 85 0 0 3944 0 --:--:-- --:--:-- --:--:-- 4047
gettest.sh: 8: [: 1:HTTP/1.1: unexpected operator
we're good
i is: 2
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 85 100 85 0 0 3293 0 --:--:-- --:--:-- --:--:-- 3400
gettest.sh: 8: [: 1:HTTP/1.1: unexpected operator
we're good
的輸出,我回來從運行curl命令一次看起來像這樣:
HTTP/1.1 200 OK
Date: Tue, 10 Feb 2015 13:21:18 GMT
Server: Apache/2.4.7 (Ubuntu)
X-Powered-By: PHP/5.5.9-1ubuntu4.5
Content-Length: 85
Content-Type: application/json; charset=utf-8
{"status":pass,"widgetinfo":"{\"widgetname\":\"the best widget\",\"price\":\"100.00\"}"}
基於上述結果,我有幾個問題s:
- 爲什麼bash腳本會打印有關總時間,速度等的統計數據以獲得curl結果?
- 我該如何修改腳本,以便除非腳本失敗,我只想看到計數器值(i)和指示通過的狀態。如果失敗,我希望腳本退出,並詳細說明curl命令返回的內容。
- 爲什麼我收到錯誤
gettest.sh:8:1:HTTP/1.1:意外的運營商?
任何提示?謝謝!
好的技巧得到HTTP_CODE用'-w' +1 – Tiago 2015-02-10 23:10:52