bash脚本新手,编写wget脚本

时间:2014-07-16 17:24:35

标签: bash wget

这是我第一次尝试编写任何代码,现在我想要一些帮助。

我收到语法错误,但不知道它在哪里。你能看一下我的代码并告诉我修复语法需要什么,以及我需要什么来改进这个脚本?

#!/bin/bash

echo -e "Please Input Website To Get URLS and IPs" 

while read line do wget $line -O $line.txt -o /dev/null ls -l $line.txt

grep "href=" $line.txt | cat -d"/" -f3 |grep $line |sort -u > $line-srv.txt

for hostname in $(cat $line-srv.txt);do host $hostname |grep "has adress"

done

2 个答案:

答案 0 :(得分:1)

你错过了第二次“完成”。你只是终止了一个你的while循环。

一致的缩进会抓住这个。也就是说,如果你在循环中缩进所有内容,那么缺少某些东西会更加明显。 E.g。

echo -e "Please Input Website To Get URLS and IPs" 

while read line
do
     wget $line -O $line.txt -o /dev/null
     ls -l $line.txt

     grep "href=" $line.txt | cat -d"/" -f3 |grep $line |sort -u > $line-srv.txt

     for hostname in $(cat $line-srv.txt);do
        host $hostname |grep "has adress"
     done

答案 1 :(得分:0)

您可能会发现这更简单:

#!/bin/bash
while read -p "Please Input Website To Get URLS and IP (CTRL-D to exit): " TARGET || { echo >&2; false; }; do
    wget -O - -o "/dev/null" "$TARGET" | grep -Po '(?<=://)[^/]+' | grep "$TARGET"
done | sort -u | xargs -r host | grep 'has address'

尝试运行它,并就预期功能与其进行比较的方式发表评论。

或另一种形式:

#!/bin/bash
while read -p "Please Input Website To Get URLS and IP (CTRL-D to exit): " TARGET || { echo >&2; false; }; do
    wget -O - -o "/dev/null" "$TARGET" | grep -Po '(?<=://)[^/]+' | grep "$TARGET" | sort -u | xargs -r host | grep 'has address'
done