0
我正在開發一個用於比較IPv4和IPv6的性能shell腳本,我想在格式上打印出值:打印輸出到shell腳本2個獨立的列
line_number, IPv4_average_speed IPv6_average_speed
這是代碼的部分就是主我的腳本:
for i in $(head -100 "${1}" | cut -d ',' -f2)
do
#status="alive";
ping -c3 "${i}" > /dev/null
if [ $? -eq 0 ]
then
status_v4="alive";
else
status_v4="dead";
echo "Cannot ping the host "${i}"";
fi
ping6 -c3 "${i}" > /dev/null
if [ $? -eq 0 ]
then
status_v6="alive";
else
status_v6="dead";
fi
if [ "$status_v4" == "alive" ] && [ "$status_v6" == "alive" ]
then
((line_number++))
ping -c3 "${i}" | tail -1 | awk '{print $4}' | cut -d '/' -f 2 | echo "$line_number,$(sed 's/$/ ms/')";
ping6 -c3 "${i}" | tail -1 | awk '{print $4}' | cut -d '/' -f 2 | echo "$line_number,$(sed 's/$/ ms/')";
fi
done
我只是能打印輸出這樣的,例如:
1, 6.542
1, 5.345
但我想要的是:
1, 6.542 5.345
我試圖給每個ping
的輸出保存到一個變量,然後使用awk
,但實際上我搞砸了的代碼。
我改變了代碼的部分的最後if
語句中是這樣的:
ipv4=$(ping -c3 "${i}" | tail -1 | awk '{print $4}' | cut -d '/' -f 2)
ipv6=$(ping6 -c3 "${i}" | tail -1 | awk '{print $4}' | cut -d '/' -f 2)
awk '{print "$line_number $ipv4 $ipv6" $1 $2 $3}'
,並將其打印出來在屏幕上什麼都沒有。有人可以幫我弄這個嗎?
?它可能有助於解決問題。另外:管道ping到尾巴awk切割回聲(?)不能是一個整潔的解決方案。 – pfnuesel
它是,你可以嘗試只用ping,它打印出很好:) –