将结果保存到变量

时间:2013-03-13 16:39:13

标签: bash netcat

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

我想:

  

nc:连接到localhost端口1(tcp)失败:连接被拒绝

我的变量。我试过了:

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

但输出为空。

3 个答案:

答案 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附加(除非重定向)到stderrfd 1附加到stdoutbash语法$( ... )仅捕获stdout

答案 2 :(得分:0)

在这种情况下,

-w是你的朋友

  

-w超时   超时秒后无法建立或空闲超时的连接。 -w标志对-l选项没有影响,即nc将永远监听连接,有或没有-w标志。默认为无超时。

nc -z -w 3 $serverName $serverPort

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

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