RET=$ 是什么意思?在之前的回复中?

RET=$ 是什么意思?在之前的回复中?

在这个线程中:https://superuser.com/questions/569092/how-to-split-the-http-error-code-from-the-contents-in-curl

这部分的意思是:


if [[ $RET -ne 0 ]] ; then
    # if error exit code, print exit code
    echo "Error $RET"

我想用它作为错误处理,但是一旦我返回 400,它仍然会回复 else 上的部分,只是显示代码,所以我不确定这个条件是什么?这是 https 状态代码还是请求失败?请描述的更详细谢谢

抱歉,我无法添加评论:( 所以这就是新问题的原因

答案1

看看你提到的这个问题,我们看到以下内容:

OUT=$( curl -qSfsw '\n%{http_code}' http://superuser.com ) 2>/dev/null

# get exit code
RET=$?

if [[ $RET -ne 0 ]] ; then
    # if error exit code, print exit code
    echo "Error $RET"
    ...
else
    ...
fi

内置$?变量是一个特殊变量,包含先前运行命令的返回代码,在本例中为curl。请注意,这是返回码curl二进制文件返回到 shell,不是HTTP 状态代码,在该示例中是控制台输出curl

OUT= ...因此,除非该行和RET=$?which overwrites之间有一些命令$?,否则即使发生错误,您的curl实现也会发出返回代码(这很奇怪,因为在这种情况下该选项指示返回)。0400-fcurl22

顺便说一句请注意该声明

OUT=$( curl ... ) 2>/dev/null

没有意义;它应该是

OUT="$( curl ... 2>/dev/null )"

相关内容