如何故意在shell脚本中抛出一个错误

时间:2014-01-23 11:21:05

标签: shell jenkins

我想编写一个脚本,当url的状态不等于200时抛出错误。因为这个脚本必须在Jenkins上执行所以它应该使构建失败。这是我写的脚本 -

STATUS=$(curl -s -o /dev/null -w '%{http_code}' http://google.com)
  if [ $STATUS -eq 200 ]; then
    echo "URL is working fine"
    break
  else
    echo"URL is not working"
    cd 123
 fi

上面的脚本工作正常,但我需要别的东西而不是-cd 123语法。

2 个答案:

答案 0 :(得分:6)

  

但我需要别的东西而不是-cd 123语法

你可以说:

exit 42

代替。这将使脚本以非零退出代码退出,该代码应由Jenkins选取。

help exit告诉:

exit: exit [n]
    Exit the shell.

    Exits the shell with a status of N.  If N is omitted, the exit status
    is that of the last command executed.

答案 1 :(得分:4)

最简单的解决方案是执行curl并使用-f选项。当Web服务器返回200以外的其他内容时,它会使curl退出非零退出代码。

通过为shell设置-e选项,您还可以让您的生活更轻松。这会导致shell在命令返回错误(=非零退出代码)时立即中止。

所以,上面的例子将简化为:

set -e
curl -sf -o /dev/null http://google.com
echo "URL is working fine"