如何将nc的结果保存到变量?
我想:
nc:连接到localhost端口1(tcp)失败:连接被拒绝
我的变量。我试过了:
a="$(nc -z -v localhost 1)"
echo $a
但输出为空。
答案 0 :(得分:9)
只需使用$()
获取命令的结果:
your_var=$(nc -z -v localhost 1)
如果您还想存储错误,请将2
(错误)重定向到1
(正常输出):
your_var=$(nc -z -v localhost 1 2>&1)
答案 1 :(得分:4)
只需将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
。
答案 2 :(得分:0)
-w
是你的朋友
-w超时 超时秒后无法建立或空闲超时的连接。 -w标志对-l选项没有影响,即nc将永远监听连接,有或没有-w标志。默认为无超时。
nc -z -w 3 $serverName $serverPort
现在你可以使用$?变量以在脚本中使用它。
if [ $? == 0 ]
可用于在脚本中使用上述命令的输出。
如果无法建立,则上述命令将在3秒后超时连接。