結果を nc から変数に保存するにはどうすればよいですか?
私が欲しい:
nc: localhost ポート 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)
にリダイレクト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 timeout timeout 秒後に確立できない、またはアイドル状態の接続。-w フラグは -l オプションには影響しません。つまり、nc は、-w フラグの有無にかかわらず、接続を永遠に待ち受けます。デフォルトはタイムアウトなしです。
nc -z -w 3 $serverName $serverPort
$? を使用できるようになりました。スクリプトで使用する変数。
if [ $? == 0 ]
上記のコマンドの出力をスクリプトで使用するために使用できます。上記のコマンドは、接続を確立できない場合、3 秒後に接続をタイムアウトにします。