curl 退出码
Coddy 使用终端进行网络通信 课程的第 30 课,共 47 课。
在一条 curl 命令中,有两种完全不同的失败概念,把它们混为一谈会导致真正的 bug。
状态码是服务器的回答:200、404、500。退出码表示 curl 是否成功完成了通信。
404 是一次成功的对话。服务器已成功连接,理解了请求并给出了响应。curl 的退出码是 0。如果脚本只检查退出码,就会认为一切正常。这是流水线通过检查,却下载了错误页面的常见原因。
curl -s -o /dev/null http://127.0.0.1:9120/missing
echo $? # 0,因为请求本身成功了如果你希望遇到错误状态时返回失败,可以使用 --fail,这样 curl 在遇到 4xx 和 5xx 状态码时会以非零值退出。否则,请自行检查 %{http_code}。
挑战
困难说明 404 仍然表示请求成功。
- 在端口 9120 上提供文件夹服务
- 请求一个不存在的页面,并打印
status=和状态码 - 在下一行打印
exit=和 curl 的退出码
预期输出:
status=404
exit=0在产生该退出码的 curl 命令之后,立即读取
$?。
亲手试试
终端
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
使用终端进行网络通信中的所有课
自己练习: Terminal 在线编辑器