2017-01-07 10 views
0

私が間違っていることを理解できませんか?私はループのどこかに詰まっていなければならないが、その場所は明らかではない。BASH/AWKがループに巻き込まれていますか?

が、私はそれがEOFを見つけたことがないと思っていますので、その仮定するが何をすべきかをやっている、それipset一覧表示するときだけではawk

でぶら下げすべてのエラーメッセージを取得していない(私には)?

 
#! /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 
+0

スクリプトにループが含まれていないため、スクリプトがループに詰まっている可能性は低いと思われます。 'set + x'やそれに類するものを追加して、どのコマンドを正確に識別してから、質問を編集して結果を表示します。 –

+0

awkの 'end {exit;}'句は何をすべきでしょうか?現在のように、何もしていません。終了ブロックは大文字で記述する必要があります。END。しかし、とにかくデフォルトのアクションがあります。 – fedorqui

+1

「なぜawkをシェルとして使用しようとしていますか?」質問。シェルを呼び出してawkを呼び出すと、シェルを呼び出してipsetを呼び出すようにシステムを呼び出すだけで愚かです。 –

答えて

0

コードをデバッグする必要があります。一時的にawksを次のように置き換えます。

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ファイルを確認してください。

関連する問題