Menu
CoddyTech

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}。

challenge icon

挑战

困难

说明 404 仍然表示请求成功。

  1. 在端口 9120 上提供文件夹服务
  2. 请求一个不存在的页面,并打印 status= 和状态码
  3. 在下一行打印 exit= 和 curl 的退出码

预期输出:

status=404
exit=0

在产生该退出码的 curl 命令之后,立即读取 $?。

亲手试试

终端
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

使用终端进行网络通信中的所有课

自己练习: Terminal 在线编辑器