You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行wget后脚本偶尔无法运行,是否需等待wget执行完成?

问题解答:是否需要等待wget执行完成?

不需要额外添加等待逻辑——你用的$(wget -qO- $URL)是bash的命令替换语法,shell会自动等待wget完全执行结束,捕获它的全部标准输出后,才会把结果赋值给LINK变量。脚本偶尔运行失败,根源不是没等wget执行,而是其他细节没处理到位:

脚本里可能导致失败的几个坑

  • wget失败未被拦截:脚本开启了set -e,但命令替换($())里的命令默认不会触发set -e的退出逻辑。如果wget因网络问题、页面无法访问返回非0状态,脚本不会直接退出,反而会把空值赋值给LINK,后续curl用空URL必然失败。
  • HTML结构变化导致匹配失效:grep的正则是硬写的页面链接格式,一旦Tor官网下载页面的HTML结构变动,grep就抓不到正确的.tar.xz链接,LINK为空后后续步骤全部崩溃。
  • curl+tar管道容错性差:如果curl下载中途中断,tar会接收到不完整的压缩包,解压直接失败,且不会提前报错。

优化建议

  • 给wget加错误检查:手动判断执行状态,避免空值流入后续步骤:
    PAGE_CONTENT=$(wget -qO- "$URL") || { echo "wget获取页面失败"; exit 1; }
    LINK=$(echo "$PAGE_CONTENT" | grep -oP -m 1 'href="\K/dist.+?ALL.tar.xz') || { echo "未找到下载链接"; exit 1; }
    
  • 改用更可靠的链接方式:直接使用Tor项目官方的固定版本下载链接,避免依赖页面HTML解析。
  • 增强curl和tar的可靠性:给curl加-C -支持断点续传,下载完成后先校验文件哈希,再执行解压操作,避免处理损坏的压缩包。

内容的提问来源于stack exchange,提问作者Timur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 14:40:08