我正在尝试编写一个简单的bash脚本,该脚本将使用文本文档中的列表并卷曲列表中的每个URL,以便查看每个URL的内容。它允许我cURL 2站点并为其余站点创建文本文档,但它只下载第一个2.我已经设法编写拉动IP的脚本并使用grep命令将它们放在一个单独的文件中。起初我试过
#!/bin/bash
for var in `cat host.txt`; do
curl -s $var >> /tmp/ping/html/$var.html
done
我尝试过使用和不使用静音开关。然后我尝试了以下内容:
#!/bin/bash
for var in `head -2 host.txt`; do
curl $var >> /tmp/ping/html/$var.html
wait
done
for var in `head -4 host.txt | tail -2`; do
curl $var >> /tmp/ping/html/$var.html
done
这将尝试在2
之后再次停止#!/bin/bash
for var in `head -2 host.txt`; do
curl $var >> /tmp/ping/html/$var.html
done
wait
for var in `head -4 host.txt | tail -2`; do
curl $var >> /tmp/ping/html/$var.html
done
这也是一样的,我是bash脚本的新手,只知道一些基础知识,任何帮助都会受到赞赏
答案 0 :(得分:0)
你输入$ var,这可能会导致文件名错误,因为URL中有两个斜杠。另外我会引用URL。例如,它使用URL的基名。
#!/bin/bash
for var in `cat host.txt`; do
name=$(basename $var)
curl -v -s "$var" -o "/tmp/ping/html/$name.html"
done
您可能还想跳过空白行和评论(#)
#!/bin/bash
file="host.txt"
curl="curl"
while read -r line
do
[[ $line = \#* ]] || [[ -z "${line}" ]] && continue
filename=$(basename $line)
$curl -s "$line" >> "/tmp/ping/html/$filename.html"
done < "$file"
答案 1 :(得分:0)
从简单开始:验证您实际上正在迭代整个列表:
# This is the recommended way to iterate over the file. See
# http://mywiki.wooledge.org/BashFAQ/001
while read -r var; do
echo "$var"
done < hosts.txt
然后添加对curl
的调用,检查其退出状态
while read -r var; do
echo "$var"
curl "$var" >> /tmp/ping/html/$var.html || echo "curl failed: $?"
done < hosts.txt