netcat命令nc - dvzw1 8.8.8.8 443
的输出似乎表现不像其他命令的输出在存储在变量中或通过read实用程序传输时可预测的工作方式。
cmd_output=$(nc -dvzw1 8.8.8.8 443)
会产生一个空变量。没有v开关的结果相同。其他cmds可以存储到变量(ls -a,pwd,date)。nc -dvzw1 8.8.8.8 443 | while read line ; do echo -e "$now $line" ; done >> ~/vpn.log
'while read echo'管道已经使用了另一个命令。我还可以将nc命令输出直接重定向到文件(即:没有管道到'读取回显')。
> nc -dvzw1 8.8.8.8 443
Connection to 8.8.8.8 443 port [tcp/https] succeeded!
Connection to 8.8.8.8 443 port [tcp/https] succeeded!
写入stderr,标准错误。 $( ... )
命令替换捕获命令的标准输出。
你可以前。将标准错误重定向到标准输出:nc -dvzw1 8.8.8.8 443 2>&1
。
如果您只想检查nc
命令是否成功,只需检查它的退出状态,例如。使用if if nc -dvzw1 8.8.8.8 443 2>/dev/null; then echo "Succeeded"; else echo "failed"; fi
或检查$?
。