[英]Bash String Interpolation wget
我正在尝试使用wget下载文件,由于某种原因,我认为我在字符串插值方面遇到了一些问题。 我有要成功解析的要下载文件的列表(对我来说不是一件容易的事),并希望将这些文件合并到for loop wget语句组合中,该组合可以批量下载这些文件。
请原谅我,您的网址无法使用,因为密码和数据已更改。
我已经尝试过使用单引号和双引号以及在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
编辑 :主要问题是“ files/$i"
而不是"files$i"
(请参阅注释)
不要使用for循环/ 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
具有完整路径。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.