我在 bash 中编写了这个脚本:
probe='nc -zv localhost 19997'
output=' grep -c 'succeeded' $probe'
if [ $output == '0' ]
then
echo 'Client online'
else
echo 'Offline'
fi
Run Code Online (Sandbox Code Playgroud)
该脚本的目的是通过 netcat 检查客户端是否通过反向 ssh 连接到端口 19997 上的我的服务器,如果这是检测器,则打印一条肯定消息。nc 会打印
Connection to localhost 19997 port [tcp/*] succeeded!
Run Code Online (Sandbox Code Playgroud)
如果它检测到客户端并且我只想将“成功”作为已建立连接的关键字进行 grep,并通过 grep 的退出代码触发 if 语句。但是当我运行这个脚本时,我得到:
test.sh: line 3: [: too many arguments
Run Code Online (Sandbox Code Playgroud)
我哪里做错了?
您可以像这样直接测试命令的结果:
if ( nc -zv localhost 19997 2>&1 >/dev/null ); then
echo 'Online'
else
echo 'Offline'
fi
Run Code Online (Sandbox Code Playgroud)
子外壳( ... )不是必需的,但我喜欢在进行这样的清洁测试时使用它们。
有关退出代码和测试的更多信息,请参阅:
| 归档时间: |
|
| 查看次数: |
1684 次 |
| 最近记录: |