BASH/AWK卡在循环中了?

BASH/AWK卡在循环中了?,bash,awk,Bash,Awk,我不知道我做错了什么?我一定是被困在了某个地方,但不清楚在哪里。(对我说) 没有收到任何错误消息,只是挂在awk上 当我列出ipset时,它正在做它应该做的事情,所以我想它永远找不到EOF #! /bin/bash clear echo "Removing old list" rm /config/bogons/bogonsv4.txt rm /config/bogons/bogonsv6.txt echo "Updating list from Team Cymru" curl -o /c

我不知道我做错了什么?我一定是被困在了某个地方,但不清楚在哪里。(对我说)

没有收到任何错误消息,只是挂在awk上

当我列出ipset时,它正在做它应该做的事情,所以我想它永远找不到EOF

#! /bin/bash clear echo "Removing old list" rm /config/bogons/bogonsv4.txt rm /config/bogons/bogonsv6.txt echo "Updating list from Team Cymru" curl -o /config/bogons/bogonsv4.txt http://www.team-cymru.org/Services/Bogons/fu curl -o /config/bogons/bogonsv6.txt http://www.team-cymru.org/Services/Bogons/fu echo "clearing old bogon tables" /sbin/ipset flush bogonsv4 /sbin/ipset flush bogonsv6 echo "Updating bogons" awk '!/^#/ {cmd="/sbin/ipset add bogonsv4 " $1 " >> output"; system(cmd);} end{exit;}' bogonsv4.txt awk '!/^#/ {cmd="/sbin/ipset add bogonsv6 " $1 " >> output"; system(cmd);} end{exit;}' bogonsv6.txt exit #! /bin/bash 清楚的 回显“删除旧列表” rm/config/bogons/bogonsv4.txt rm/config/bogons/bogonsv6.txt echo“从Cymru团队更新列表” curl-o/config/bogons/bogonsv4.txthttp://www.team-cymru.org/Services/Bogons/fu curl-o/config/bogons/bogonsv6.txthttp://www.team-cymru.org/Services/Bogons/fu echo“清除旧的bogon表” /sbin/ipset冲洗bogonsv4 /sbin/ipset冲洗bogonsv6 echo“更新bogons” 啊!/^#/{cmd=“/sbin/ipset add bogonsv4“$1”>>输出;系统(cmd);}end{exit;}”bogonsv4.txt 啊!/^#/{cmd=“/sbin/ipset add bogonsv6”$1“>>输出;系统(cmd);}end{exit;}”bogonsv6.txt 出口
你应该调试你的代码。通过以下方式临时更换AWK:

awk '!/^#/ {cmd="/sbin/ipset add bogonsv4 " $1 " >> output"; print("running:",cmd); system(cmd)}' bogonsv4.txt > errs.txt
awk '!/^#/ {cmd="/sbin/ipset add bogonsv6 " $1 " >> output"; print("running:",cmd); system(cmd)}' bogonsv6.txt >> errs.txt

然后检查
errs.txt
文件。

由于您的脚本不包含循环,它似乎不太可能卡在循环中。添加
set+x
或类似内容,以准确识别您遇到的命令,然后通过问题显示结果。awk中的
end{exit;}
子句应该做什么?现在,它什么也没做。结束块必须用大写字母end书写。然而,退出它仍然是默认操作。还有一个问题是“为什么要尝试将awk用作shell?”。让shell调用awk to call系统调用shell to call ipset是愚蠢的。awk调用shell是为了删除文件中的注释行。我能通过bash做到吗?成功了谢谢!