【发布时间】:2016-01-06 12:57:49
【问题描述】:
我非常接近完成我的任务,但我有点难过。
这是我得到的:
for file in $1
do
wget "$1" -O "output-$1.html" -q
cat output-$1.html | grep -o '<a .*href=.*>' |
sed -e 's/<a /\n<a /g' |
sed -e 's/<a .*href=['"'"'"]//' -e 's/["'"'"'].*$//' -e '/^$/ d' |
grep 'http' > ~/bcache/$1.bcache
select LINK in `cat ~/bcache/$1.bcache` "q_to_quit"
do
if [ $LINK = "q_to_quit" ]
then
exit 1
else
repeat lines 3-7
fi
done
第 3-7 行获取一个 url 并输出到一个 html 文件,然后使用 grep 和 sed 对该 html 文件进行排序,只提取“http://...”,然后将其放入文件中它存储在一个名为 bcache 的目录中。
select 语句打印出所有前面带有数字的“http://...”,最后一个选项是 q_to_quit。
一旦有人输入了一个数字(对应一个 url,需要对其进行排序、保存、存储、冲洗和重复),我不知道如何重复第 3 行到第 7 行的过程。
【问题讨论】:
-
您可以考虑使用新参数重新执行相同的脚本:
exec "$0" "$LINK" -
for循环的目的是什么? -
@Ramana 不,这根本行不通,而你 Don't Read Lines With
for。
标签: bash loops select sed grep