将结果保存到变量
问题描述:
如何将nc的结果保存到变量中?将结果保存到变量
我想:
NC:连接到本地主机端口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)
+0
2>&1救了我,我疯了! – 2017-03-31 16:39:39
答
只是重定向到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超时 连接不能超时秒后建立或空闲超时的朋友。 -w标志对-l选项没有影响,即nc将永久地监听连接,无论是否带有-w标志。默认值是没有超时。
nc -z -w 3 $serverName $serverPort
现在你可以使用$?变量在脚本中使用它。
if [ $? == 0 ]
可用于在脚本中使用上述命令的输出。 如果无法建立,上述命令将在3秒后超时连接。
所以你想捕捉错误输出? – 2013-03-13 16:40:27