2013-03-13 101 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秒後超時連接。