我有以下代码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
}
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我收到以下错误:
syntax error near unexpected token `}'
`}'
Run Code Online (Sandbox Code Playgroud)
我不明白为什么:}正在关闭函数的范围.
你需要done一行来终止你的while循环,fi在行和右括号之间}.
但是,我不完全确定为什么你甚至有这个while true循环,因为无论if评估为true还是false,你都会打破它.因此它是多余的,除非你计划在某些时候改变其中一个块的行为.
如果你没有计划,那你就更容易做得更好:
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
}
Run Code Online (Sandbox Code Playgroud)
我也不完全确定传入主机和端口然后忽略它们的理智(而是使用localhost两个硬编码端口).
但是,我会假设你还处于开发/测试阶段,而不是你疯了的可能性:-)