从外部接收下载指令
#!/bin/bash
# 定义重试次数上限(可选)
MAX_RETRIES=100
retry_count=0
# 检查是否提供了下载命令参数和期望的输出文件名
if [ -z "$1" ]; then
echo "请提供一个下载指令,例如: ./download_model.sh 'curl -O https://example.com/model.zip'"
exit 1
fi
# 获取用户提供的下载命令
download_command="$1"
# 循环执行下载命令,直到成功或达到最大重试次数
while true; do
# 执行下载命令并捕获输出和错误码
output=$(eval "stdbuf -oL -eL $download_command" 2>&1 | tee /dev/tty)
exit_code=$?
# 检查输出中是否包含特定的错误信息
if [[ "$output" != *"max retries exceeded"* && "$output" != *"unexpected EOF"* ]]; then
echo "模型下载成功!"
break
else
retry_count=$((retry_count + 1))
echo "第$retry_count次尝试失败,错误信息: $output"
# 检查是否达到最大重试次数
if [ $retry_count -ge $MAX_RETRIES ]; then
echo "已达到最大重试次数,停止尝试。"
exit 1
fi
# 等待一段时间再进行下一次尝试(可选)
sleep 5
fi
done
下载示例
sh download_model.sh 'ollama run llama3.3'