Bash 通过读取实用程序将netcat命令的输出传递给变量或管道
netcat命令的输出Bash 通过读取实用程序将netcat命令的输出传递给变量或管道,bash,netcat,Bash,Netcat,netcat命令的输出nc-dvzw1 8.8.8.8 443在存储在变量中或通过读取实用程序传输时,其行为似乎与其他命令的输出不一样 将nc cmd输出存储到变量cmd_output=$(nc-dvzw1 8.8.8.8 443)会生成一个空变量。在不使用v开关的情况下,结果相同。其他CMD可以存储到变量(ls-a、pwd、date) 通过管道将nc输出传输到读取实用程序,如下所示,不会将任何内容写入文件。在不使用v开关的情况下,结果相同 “while read echo”管道已使用另一个命令
nc-dvzw1 8.8.8.8 443
在存储在变量中或通过读取实用程序传输时,其行为似乎与其他命令的输出不一样
cmd_output=$(nc-dvzw1 8.8.8.8 443)
会生成一个空变量。在不使用v开关的情况下,结果相同。其他CMD可以存储到变量(ls-a、pwd、date)到8.8.8.8 443端口[tcp/https]的
连接成功代码>被写入标准错误stderr中。$(…)
命令替换捕获命令的标准输出
您可以将标准错误重定向到标准输出:nc-dvzw1 8.8.8.8 443 2>&1
如果您只想检查nc
命令是否成功,只需检查它的退出状态,例如使用IfIf nc-dvzw1 8.8.8.8 443 2>/dev/null;然后回声“成功”;否则回声“失败”;fi
或通过检查$?
连接到8.8.8.8 443端口[tcp/https]成功
报告成功。它的退出状态为0<代码>nc:连接到8.8.8.8端口443(tcp)超时:操作正在进行报告错误或失败。它的退出状态为1。据我所知,Stderr…用于错误和诊断。它们都是标准的吗?
nc -dvzw1 8.8.8.8 443 | while read line ; do echo -e "$now $line" ; done >> ~/vpn.log
> nc -dvzw1 8.8.8.8 443
Connection to 8.8.8.8 443 port [tcp/https] succeeded!