这是我的脚本应该执行的操作:ping 5倍导入文本文件每一行的IP地址。如果IP在5次中无法访问到3次,则会回显“它关闭了!”。和(应该)移至下一个IP ...除了我不知道如何配置此“跳过”部分。这是我当前的代码:
FILE=file.txt
unreachableIP=0
while IFS='' read -r line || [ -n "$line" ]; do
set -- $line
for (( i=1; i<=5; i++ ))
do
echo "Ping $1 $i times"
ping -c 1 $1
if [ "$?" = 0 ]
then
echo "reachable"
else
echo "unreachable"
((unreachableIP++))
echo $unreachableIP
if [ $unreachableIP -eq 3 ]
then
echo "it's down!"
unreachableIP=0
fi
fi
done
done < $FILE
例如:如果IP地址是第一次,第二次,第三次和第四次都不可达,我希望脚本移至下一个IP(下一行),而不是尝试第五次ping通。这是file.txt
:
8.8.8.8 GoogleDNS
1.1.1.1 CloudFlareDNS
213.1.1.1 SomeFakeIPForDebug
感谢您的帮助。
使用break
实现您正在谈论的“跳过”功能。
例如
if [ "$unreachableIP" -eq 3 ]; then
break
fi
它将退出当前循环。
继续
中断和继续循环控制命令[1]与其他编程语言中的对应部分完全对应。 break命令终止循环>(中断它),而continue则跳转到循环的下一个迭代,>跳过该特定循环周期中的所有其余命令。