bash - 如果循环正确,如何使用

时间:2016-01-13 18:22:02

标签: bash loops if-statement

我对脚本很新,我现在正在尝试创建一个简单的if else循环,该循环遍历一个同时列有ipaddress和hostname的文件。它基本上会检查它们是否在线。

这就是我所拥有的:

for ip in `cat /tmp/blabla2 | awk '{print $1}'` ; do
if ping -c1 $ip >/dev/null 2>&1; then
fqdn=`host $ip | awk '{print $5}'`
echo "$ip $fqdn is UP"
else
fqdn=`host $ip | awk '{print $5}'`
echo "$ip $fqdn is DOWN"
fi
done

我很难理解的是如何在不使用host $ ip

之类的情况下包含主机名

当主机名已在/ tmp / blabla2中的同一行上时,似乎没有必要再进行主机查找

我尝试使用awk print在if循环中搞乱变量,但没有运气。

有关此的任何提示/技巧吗? 谢谢你的时间

1 个答案:

答案 0 :(得分:0)

不要在for循环(reference)中读取文件的行。 read命令可以从文件行中读取多个单词。

while read -r ip host; do
    if ping -c1 $ip >/dev/null 2>&1; then
        echo "$ip $host is UP"
    else
        echo "$ip $host is DOWN"
    fi
done < /tmp/filename

缩进对于维护自己的代码非常重要。