Bash出口1是否应在终端上显示任何内容?

时间:2019-05-16 06:55:07

标签: bash shell

如果另一个脚本或进程(例如,Gitlab .gitlab-ci.yml文件中的顺序任务)取决于退出的Bash脚本而没有错误继续,或者无法退出进一步执行;除了成功退出0或捕获所有错误退出1之外,Bash脚本还应该做其他事情吗?

下面的示例代码测试站点是否成功部署。

#!/bin/bash

flag="false"
for i in {1..10}
    do
        response=$(curl -Is http://mysite/ | head -n 1 |  tr -d '\r')
        echo "$response"
        if [ "$response" = "HTTP/1.1 200 OK" ]; then
            echo "SITE UP"
            flag="true"
            exit 0
        fi
        sleep 1s
done
if [ "$flag" = "false" ]; then
    echo "SITE DOWN"
    exit 1
fi

一切正常,按预期进行100%,该脚本以./test-up.sh > /dev/null执行,以抑制所使用的调试回显(以及curl命令返回的文本)。

但是,如果脚本失败,则不会在命令行上显示任何有关错误的信息。命令行保持空白。如果遇到出口0,也会发生同样的情况。

以上目的?

1 个答案:

答案 0 :(得分:4)

回声到stderr

echo "SITE DOWN" >&2