我是新來的bash編程,我想知道如何從bash循環中退出,一旦它完成執行語句。如何使bash for循環退出?
我想創建一個ping腳本,它的工作原理..但腳本不會退出。假設最後一個主機地址是192.168.42.18 ..之後腳本不會退出。它只是試圖迭代。
正如我所說的伊爾姆新,所以我對我的noobness的xD
我曾嘗試2種方法和這兩種方法在語句得到執行後不退出最終遺憾。
方法1種
for ((x=42;x<=43;x++))
do
for ((y=1;y<=20;y++))
do
ping -c 1 192.168.$x.$y | grep "bytes from" |cut -d " " -f 4|cut -d":" -f 1 &
done
done
方法2
#!/bin/bash
for n in {42..43}
do
for h in {1..100}
do
ping -c 1 192.168.$n.$h | grep "bytes from" |cut -d " " -f4 | cut -d ":" -f1 &
done
done
請揭示應該怎麼繼續進行一些光。
最後地址是43.20,爲什麼你認爲它應該是42.18?循環終止的條件是什麼? – karakfa
目前尚不清楚你的問題是什麼。對於循環* do *在最後一次迭代之後退出。你究竟看到了什麼? – chepner
我建議你避免背景你的管道。它有可能產生比你應該處理的更多的進程,並且很難調試。看起來像'.18'是最後一行處理可能只是'.18'作爲*完成*處理的列表行。查看腳本是否在管道末尾沒有'&'的情況下運行。另外,請研究['fping'](http://fping.org/)作爲替代方案;它可能適用於您的Linux發行版。 – ghoti