shell判断如果curl得到的文件内容为空,则换另一个网址,如果都为空,则终止
时间: 2024-04-04 17:29:44 浏览: 10
可以使用以下代码实现:
```shell
url1="https://example.com/file1"
url2="https://example.com/file2"
response=$(curl -s "$url1")
if [ -z "$response" ]; then
response=$(curl -s "$url2")
if [ -z "$response" ]; then
echo "Both URLs are empty. Terminating."
exit 1
fi
fi
# Use the response here
```
这段代码首先尝试获取 `$url1` 的内容,如果内容为空,则尝试获取 `$url2` 的内容。如果两个 URL 的内容都为空,则输出错误信息并终止脚本。如果获取到了非空的内容,则可以在最后一行的注释处使用这个内容。
相关问题
curl命令拉取远端内容为空的txt文件时,拉取不到本地是什么原因
当使用curl命令拉取远端内容为空的txt文件时,可能会出现拉取不到本地的情况。这可能是因为远程服务器返回的HTTP响应中没有正确设置Content-Length头导致的。
Content-Length头用于指示响应体的长度,当响应体为空时,应该设置Content-Length头的值为0。如果服务器没有正确设置Content-Length头,那么客户端可能会认为响应体还没有接收完毕,从而一直等待响应体的到来,直到超时。在这种情况下,curl命令可能会一直等待,而无法拉取远程文件到本地。
解决这个问题的方法是,在curl命令中添加`--ignore-content-length`参数,以忽略Content-Length头。例如:
```
curl --ignore-content-length -O <remote_url>
```
这个命令会忽略Content-Length头,强制将响应体下载到本地,并以远程文件名命名。
用shell语言写一个执行curl命令是否正常的判断语句
可以使用以下代码段来判断curl命令是否正常执行:
```shell
if curl --version >/dev/null 2>&1; then
echo "curl is installed."
else
echo "curl is not installed."
fi
```
在这个代码段中,我们使用curl --version命令来检查curl是否已安装。如果curl已安装,该命令将返回版本信息并输出到标准输出(stdout)。我们将 stdout 重定向到 /dev/null,以消除输出。如果curl未安装,则该命令将返回一个错误,并将错误信息输出到标准错误(stderr)。我们使用2>&1将stderr重定向到stdout,然后再将stdout重定向到 /dev/null,以消除错误信息。最后,我们使用if语句来判断curl命令是否正常执行,如果正常执行则输出 "curl is installed.",否则输出 "curl is not installed."。