2012-06-28 102 views
0

我從來沒有真正過這個地方被要求的情況下,但我在這裏...擊循環:如何執行一次,然後移動到下一個迭代

什麼我(不幸)得到的是netstat -nr的輸出(將近6000個單獨的靜態路由)。

我需要這個文件,並最終將每一行轉換成一個新的'ip route add'命令,一旦我有這個工作。

這是我的failcode(底部回聲是測試 - >我要代替他們的IP路由添加一旦這個工程):

num=`cat $logfile | wc -l` 
echo $num 
echo " " 
for ((i=0; i<=$num; i++)) 
do 

dst=$(awk '{print$1}' $logfile) 
gw=$(awk '{print$2}' $logfile) 
mask=$(awk '{print$3}' $logfile) 
echo $dst 
echo $gw 
echo $mask 
echo " " 
done 

輸出,而不是看起來像: 目的地網關子網掩碼 樣子:

目標目標目標目標

網關網關網關網關

Netmask Netmask Netmask Netmask

我該如何使它每次運行時,每個輸出都是單個DST/GW /網絡掩碼,我可以將它們輸入命令?

謝謝!

回答

1

答案就在AWK:

awk '{print "echo",$1,$2,$3}' $logfile | sh -x 

現在用什麼命令你需要運行

+0

無需後'echo'的空間,逗號爲您提供了免費的。 –

+0

對:)忘記了。感謝名單! – anttix

+0

您可能希望在'{'之前添加'NR> 1'以避免爲標題行添加路由,這顯然是您日誌文件的第一行。 – tripleee

3

你循環替換回聲都在裏面了。您的awk命令每次處理整個文件並完成。

如果您需要在變量的值與此替換您幾乎所有的腳本:

#!/bin/bash 
while read -r dst gw mask _ 
do 
    echo "$dst $gw $mask" # substitute your command here 
done < "$logfile" 
+0

謝謝丹尼斯 - 我已經知道anttix提供了什麼,所以我會把它給他,但是無論如何謝謝你:) – Numpty

相關問題