我在bash
中有以下代码:
check_port()
{
local host=${1}
local port=${2}
echo $host
echo $port
while true; do
if nc -w 5 -z 127.0.0.1 111 && nc -w 5 -z 127.0.0.1 5001 ;
then
echo -e "\a\n => Port at host is open"
break
else
echo -e "\a\n => Port at host is closed"
break
fi
}
出于某种原因,我收到以下错误:
syntax error near unexpected token `}'
`}'
我不明白为什么:}
正在关闭该功能的范围。
答案 0 :(得分:5)
您需要done
行来终止while
行与fi
行和右大括号}
之间的循环。
但是,我不完全确定为什么你甚至拥有<{em} {/ 1>}循环,因为无论while true
是否为真,假。因此,它是多余的,除非您计划在某些时候改变其中一个块的行为。
如果您不计划这样做,那么您可以通过更简单的方式获得更好的效果:
if
我也不完全确定传入主机和端口然后忽略它们的完整性(而是使用带有两个硬编码端口的check_port()
{
local host=${1}
local port=${2}
echo $host
echo $port
if nc -w 5 -z 127.0.0.1 111 && nc -w 5 -z 127.0.0.1 5001 ; then
echo -e "\a\n => Port at host is open"
else
echo -e "\a\n => Port at host is closed"
fi
}
)。
但是,我会假设您仍处于开发/测试阶段,而不是您疯狂的可能性: - )
答案 1 :(得分:1)
done
循环末尾的while
缺失
....
break
fi
done;
}