这是我第一次尝试编写任何代码,现在我想要一些帮助。
我收到语法错误,但不知道它在哪里。你能看一下我的代码并告诉我修复语法需要什么,以及我需要什么来改进这个脚本?
#!/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
答案 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