【发布时间】:2016-10-27 17:14:15
【问题描述】:
This is a crawler from GitHub 我要自己实现,但由于是新手,所以无法阅读 bash。这可以在答案中解释吗
#!/bin/bash
# Create an array files that contains list of filenames
files=($(< url.txt))
cities=($(< city.txt))
url="http://www.grotal.com/"
citycodes=($(<citycode.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
for city in "${cities[@]}"; do
mkdir "${city}"
mkdir "${city}/${file}"
wget -O "${city}/${file}/${file}${citycodes[@]}" "${uri}${url}${city}/${file}-${citycodes[@]}/"
done
done
done < url.txt
特别是这些(即使你选择投反对票...)
while IFS='=| ' read -r param uri;
然后是这个:
done < url.txt
【问题讨论】:
-
请参阅BashFAQ #1,其中详细描述了
while read循环。 -
另外,
files和cities数组的填充方式非常错误。mapfile -t或readarray -t或read -r -a会好得多。 -
无论如何——如果您仅问“while 读取循环如何在 bash 中工作?”,那将是一个更好的问题。包括循环体内容、预先设置内容等。将问题的范围扩大到此处的话题性……值得怀疑的程度。请参阅stackoverflow.com/help/how-to-ask,尤其是关于什么是好的标题的部分(需要针对个别问题!)
-
...关于“请向我解释这段代码”的问题,以及为什么将它们关闭过于宽泛是公认的做法:meta.stackoverflow.com/questions/278797/…、meta.stackoverflow.com/questions/253894/…
标签: bash web-crawler