Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String Bash字符串插值wget_String_Bash_Interpolation_Interpretation - Fatal编程技术网

String Bash字符串插值wget

String Bash字符串插值wget,string,bash,interpolation,interpretation,String,Bash,Interpolation,Interpretation,我试图使用wget下载文件,出于某种原因,我认为我在字符串插值方面遇到了一些问题。我有一个要下载的文件列表,我已经成功地解析了这些文件(这对我来说是一个不小的壮举),我想将这些文件合并到一个for-loop wget语句组合中,该组合可以大量下载这些文件 请原谅我的URL将不适用于您,因为密码和数据已更改 我尝试了单引号和双引号,以及对URL中的几个字符进行转义(我认为&s和@s是其精髓所在) wget语句作为单个命令工作 wget -O files/$i "https://tickhis

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

请原谅我的URL将不适用于您,因为密码和数据已更改

我尝试了单引号和双引号,以及对URL中的几个字符进行转义(我认为&s和@s是其精髓所在)

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

编辑:主要问题是“
文件/$i”
而不是
“文件$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
读取时-ri;做
wget-O“文件$i”https://tickhistory.com/HttpPull/Download?  使用者=KIDFROST@LARAZA.com&pass=ricosave&file=$i”
done

还要确保引用变量以防止扩展/拆分错误。也不确定为什么要执行
文件/$i
,因为
$i
具有完整路径

除了
for
vs
while
问题之外,您的代码看起来很好。它怎么断的?你收到错误消息了吗?/6319-report.csv.gz:没有这样的文件或目录/6264-confirmation.txt.gz:没有这样的文件或目录尽管有这些消息,我知道文件在那里,而且,我的路径是“正确的”(但显然出了问题)。错误消息似乎是说您不知何故丢失了
/results
前缀。正确但相切;不太可能真正解决OP的问题。@tripleee我认为要么是一些奇怪的扩展,要么是files/$I(变成例如files//results/KIDFROST@LARAZA.com--(B627-.txt.gz)没有任何意义,它很可能解决这里的问题。虽然agree可以帮助您获得关于error.files/$i的更多信息,但我将在此处保存下载。非常感谢您考虑我的问题。@ChaseCB是的,但是由于您的输入文件中的路径已经以
/
开头,它将扩展到例如
文件//结果/KIDFROST@LARAZA.com--B627-.txt.gz
,它永远不可能存在。如果你有一个
文件
子目录,那么你可能想要
wget-O“files$i”…
再次感谢“files$i”发挥了作用……。如果你曾经写过一本书或成为一名导师,我真诚地感谢你的帮助。让我知道。
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