如何将结果从 nc 保存到变量中?
我想:
nc:连接到 localhost 端口 1 (tcp) 失败:连接被拒绝
在我的变量上。我试过了:
a="$(nc -z -v localhost 1)"
echo $a
但输出为空。
只需使用$()
获取命令的结果:
your_var=$(nc -z -v localhost 1)
如果您还希望存储错误,则将2
(错误)重定向到1
(正常输出):
your_var=$(nc -z -v localhost 1 2>&1)
只需重定向stderr
到stdout
,表示为2>&1
:
a="$(nc -z -v localhost 1 2>&1)"
echo $a
nc: connect to localhost port 1 (tcp) failed: Connection refused
文件描述符2
附加(除非重定向)到stderr
,fd 1
并附加到stdout
。bash
语法仅$( ... )
捕获. stdout
-w
在这种情况下是你的朋友吗
-w timeout 超时秒后无法建立或空闲超时的连接。-w 标志对 -l 选项没有影响,即 nc 将永远监听连接,无论有无 -w 标志。默认为无超时。
nc -z -w 3 $serverName $serverPort
现在你可以使用 $? 变量以在您的脚本中使用它。
if [ $? == 0 ]
可用于在脚本中使用上述命令的输出。如果无法建立,上述命令将在 3 秒后超时连接。