免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 15941 | 回复: 2
打印 上一主题 下一主题

[DNS] 请求高手指点,脚本出错syntax error near unexpected token `done' [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-05 16:44 |只看该作者 |倒序浏览
运行以下脚本出错,错误如下:
wget is /usr/bin/wget
--15:36:05--  http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest
           => `delegated-apnic-latest'
Resolving ftp.apnic.net... 202.12.29.20
Connecting to ftp.apnic.net|202.12.29.20|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 844,736 (825K) [text/plain]

100%[===================================================================>] 844,736      186.97K/s    ETA 00:00

15:36:11 (152.44 KB/s) - `delegated-apnic-latest' saved [844736/844736]

./bb: line 40: syntax error near unexpected token `done'
./bb: line 40: `done'





脚本如下:
#!/bin/sh
#auto get the IP Table
#get the newest delegated-apnic-latest
rm delegated-apnic-latest

if type wget
    then wget http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest
    else fetch http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest
fi
grep 'apnic|CN|ipv4' delegated-apnic-latest | cut -f 4,5 -d '|' | tr '|' ' ' | while read ip cnt
do
mask=$(bc <<END | tail -1
pow=32;
define log2(x) {
if (x<=1) return (pow);
pow--;
return(log2(x/2));
}
log2($cnt);
END
)
echo $ip/$mask';'>>cnnet

resultext=`whois $ip@whois.apnic.net | grep -e ^netname -e ^descr -e ^role -e ^mnt-by | cut -f 2 -d ':' | sed 's/ *//'`

if echo $resultext | grep -i -e 'railcom' -e 'crtc' -e 'railway'
   then echo $ip/$mask';' >> crc
elif echo $resultext | grep -i -e 'cncgroup' -e 'netcom'
   then echo $ip/$mask';' >> cnc
if echo $resultext | grep -i -e 'chinanet' -e 'chinatel'
   then echo $ip/$mask';' >> telcom_acl
elif echo $resultext | grep -i -e 'unicom'
   then echo $ip/$mask';' >> unicom
elif echo $resultext | grep -i -e 'cmnet'
   then echo $ip/$mask';' >> cmnet
else
   echo $ip/$mask';' >> other_acl
fi

done

论坛徽章:
0
2 [报告]
发表于 2008-06-12 15:22 |只看该作者
if echo $resultext | grep -i -e 'chinanet' -e 'chinatel'  这行
改成elif echo $resultext | grep -i -e 'chinanet' -e 'chinatel'

当初发布脚本时漏掉了

论坛徽章:
0
3 [报告]
发表于 2009-05-15 14:44 |只看该作者
if echo $resultext | grep -i -e 'railcom' -e 'crtc' -e 'railway'
   then echo $ip/$mask';' >> crc
elif echo $resultext | grep -i -e 'cncgroup' -e 'netcom'
   then echo $ip/$mask';' >> cnc

后面少了一个 fi  吧



我也正在解决这个问题,从google搜到你的帖子的

我的script更长,450行。 整个是一个for loop. 报错在最后一行的done。。。。我晕

正在逐个if 和for的检查
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP