前言 在 DD脚本群 https://t.me/reinstall_os 有群友遇到网络不好, 脚本下载资源时容易中断的问题. 思路 上一篇我们发现不能简单的将某个资源提前放到VPS指定的位置 因为会出现 不同的资源 放到VPS上同一个位置的情况. 那么我们换个思路. 在整个脚本的执行过程中, 所有的curl命令的内容和次序是固定的. 换句话说, 我们每次执行脚本时, 第1句, 第2句, 第3句, ... 第n句curl命令的内容是固定的. 哪怕脚本中某一条curl语句被放在了循环中, 被执行了多次. 但是从展开后的执行序列来说, 每次curl命令的内容是固定的. 实践 所以我们 在已有的脚本头部添加一个这样的curl壳子: 1) 记录并打印一个调用序号. 每次调用序号增1 2) 输出 pwd 当前目录 3) 输出完整的 curl 命令及全部参数 4) 这个curl壳, 并不去真正下载文件. 5) 根据调用序号, 执行预设的命令. 如, cp file1 /path/to/file 或 cat file2 来替代 curl -LO 或 curl -Lo 的保存文件的命令 或 curl -L 的输出到stdout的命令 6) 这些预设命令是会被人工编辑而增加的. 用case实现 5) 的逻辑. 7) 这个curl壳, 永远返回成功. 把这个要求发给GPT, 得到 # 全局调用计数器 curl_call_count=0 curl() { curl_call_count=$((curl_call_count + 1)) # 输出调用序号和当前目录(到 stderr) echo "[DEBUG] curl call # $curl_call_count" >&2 echo "[DEBUG] Current directory: $(pwd)" >&2 # 输出完整命令(包含所有参数,安全转义) printf '[DEBUG] Command: curl ' >&2 printf '%q ' "$@" ...