6

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

我想:

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

在我的变量上。我试过了:

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

但输出为空。

4

3 回答 3

11

只需使用$()获取命令的结果:

your_var=$(nc -z -v localhost 1)

如果您还希望存储错误,则将2(错误)重定向到1(正常输出):

your_var=$(nc -z -v localhost 1 2>&1)
于 2013-03-13T16:40:38.840 回答
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

于 2013-03-13T16:40:39.287 回答
1

-w在这种情况下是你的朋友吗

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

nc -z -w 3 $serverName $serverPort

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

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

于 2016-12-23T14:28:13.920 回答