1

我正在尝试使用 wget 下载文件,出于某种原因,我认为我在字符串插值方面遇到了一些问题。我有一个要下载的文件列表,我已成功解析等(对我来说不是一件小事),并希望将这些文件合并到一个 for 循环 wget 语句组合中,该组合可以大量下载这些文件。

请原谅我的 URL 对您不起作用,因为密码和数据已更改。

我尝试过单引号和双引号以及转义 URL 中的一些字符(我认为 &s 和 @s 是其中的精髓)。

   list of files

   files.txt

   /results/KIDFROST@LARAZA.com--B627-.txt.gz      
   /results/KIDFROST@LARAZA.com--B626-part002.csv.gz   
   /results/KIDFROST@LARAZA.com--B62-part001.csv.gz

wget语句作为单个命令工作

   wget -O files/$i "https://tickhistory.com/HttpPull/Download?           user=KIDFROST@LARAZA.com&pass=RICOSUAVE&file=/results/KIDFROST@LARAZA.com--N6265-.txt.gz"

但循环不起作用

   for i in `cat files.txt`; do  
       wget -O files/$i "https://tickhistory.com/HttpPull/Download?  user=KIDFROST@LARAZA.com&pass=RICOSUAVE&file=$i"
   done
4

1 回答 1

0

编辑:主要问题是“files/$i"而不是"files$i"(见评论)

不要使用 for-loop/cat 来读取文件,使用 while/read 循环。缓冲区溢出/拆分/等问题较少...

while read -r i; do
  wget -O "files$i" "https://tickhistory.com/HttpPull/Download?  user=KIDFROST@LARAZA.com&pass=RICOSUAVE&file=$i"
done < files.txt

还要确保引用变量以防止扩展/拆分错误。也不确定你为什么要这样做files/$i,因为$i有完整的路径。

于 2014-01-26T07:03:38.177 回答