使用bash脚本和wget下载文件

8
我一直在尝试创建一个简单的脚本,它将从一个 .txt 文件中获取要下载的文件列表,然后使用循环读取 .txt 文件,确定需要下载哪些文件,并使用另一个分离的 .txt 文件来确定文件下载地址。但我的问题是我不知道如何做到这一点。我已经尝试过很多次,但总是失败。
file.txt
1.jpg
2.jpg
3.jpg
4.mp3
5.mp4

=====================================

url.txt
url = https://google.com.ph/

=====================================

download.sh
#!/bin/sh
url=$(awk -F = '{print $2}' url.txt)
for i in $(cat file.txt);
do 
wget $url
done

非常感谢你的帮助。

不要使用for var in $(command)。请参考此答案:http://stackoverflow.com/questions/19606864/ffmpeg-in-a-bash-pipe/19607361?stw=2#19607361。否则,在这种情况下,您可以使用`cut`而不是`awk`。 - Idriss Neumann
我有一个问题,如果地址栏在第二列和第二行,我应该如何处理URL文件?我的意思是针对这种情况的awk命令。 - user3534255
2个回答

10

除了R Sahu在他的回答中指出的明显问题之外,您还可以避免以下问题:

  • 使用awk解析您的url.txt文件。
  • 使用for $(cat file.txt)迭代处理file.txt文件。

您可以这样做:

#!/bin/bash

# Create an array files that contains list of filenames
files=($(< file.txt))

# Read through the url.txt file and execute wget command for every filename
while IFS='=| ' read -r param uri; do 
    for file in "${files[@]}"; do 
        wget "${uri}${file}"
    done
done < url.txt

9

不是...而是...

wget $url

尝试

wget "${url}${i}"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接