我正在编写脚本以检查是否可以使用curl从远程服务器下载文件。如果下载文件时出现问题或文件不存在,脚本将报告。我使用以下代码段:
curl --fail -u "$USERNAME:$PASSWORD" --remote-name "$HOST/$FILEPATH"
if [ $? -ne 0 ]
then
echo "There is some error in Downloading file from $HOST";
else
echo "Download success";
fi
但是我总是将退出状态代码设置为0.这是因为curl总是下载文件(即使文件不存在),你可以在该文件中找到实际的错误信息。
那么如何获得真正的卷曲退出状态代码(找不到22个文件)?
答案 0 :(得分:2)
--fail
将返回错误代码22
返回代码可能与其他协议不同,例如ftp。见下文:
me@udistro:~$ curl --fail ftp://ftp.redhat.com/redhat/brms/6.2.0/en/source/MD5
curl: (78) RETR response: 550
me@udistro:~$ echo $?
78
但正如手册页所述:
此方法不是故障安全的,并且有时会出现这种情况 不成功的响应代码将会漏掉,特别是在 涉及认证(响应代码401和407)。
作为起点,你可以试试这个:
curl --fail -u "$USERNAME:$PASSWORD" --remote-name "$HOST/$FILEPATH"
var=$?
if [ $var -ne 78 ] && [ $var -ne 22 ]
then
echo "Success"
else
echo "Failed"
fi