2013-03-13 105 views
3

如何将nc的结果保存到变量中?将结果保存到变量

我想:

NC:连接到本地主机端口1(TCP)失败:连接上我的变量拒绝

。我试过了:

a="$(nc -z -v localhost 1)" 
echo $a 

但输出为空。

+0

所以你想捕捉错误输出? – 2013-03-13 16:40:27

回答

6

只需使用$()得到命令的结果:

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

4

只是重定向到stderrstdout,表示由2>&1

a="$(nc -z -v localhost 1 2>&1)" 
echo $a 
nc: connect to localhost port 1 (tcp) failed: Connection refused 

连接文件描述符2(除非重定向)至stderrfd 1连接至stdoutbash语法$(...)仅捕获stdout

0

-w是你在这种情况下

-w超时 连接不能超时秒后建立或空闲超时的朋友。 -w标志对-l选项没有影响,即nc将永久地监听连接,无论是否带有-w标志。默认值是没有超时。

nc -z -w 3 $serverName $serverPort 

现在你可以使用$?变量在脚本中使用它。

if [ $? == 0 ]可用于在脚本中使用上述命令的输出。 如果无法建立,上述命令将在3秒后超时连接。