我正在尝试使用awk
来提取部分输出并将其分配给变量,但我无法使AWK正常工作。
这是我正在运行的命令:
nc -v -z 192.168.8.216 9100 | awk '{print $NF}
“
这是输出
Connection to 192.168.8.216 9100 port [tcp/*] succeeded!
我想要实现的是输出只是
succeeded
我只想要命令的最后一部分,以便我可以将它分配给变量并运行if语句。
答案 0 :(得分:5)
该命令似乎是将输出发送到STDERR
而不是STDOUT
。
将STDERR
与STDOUT
合并:
nc -v -z 192.168.8.216 9100 2>&1 | awk '{print $NF}'
我只想要命令的最后一部分,以便我可以将它分配给 变量并运行if语句。
如果目的是简单地确定命令产生成功这个词,那么你不需要变量:
[[ $(nc -v -z 192.168.8.216 9100 2>&1) =~ succeeded ]] && echo "Yes"
如果您想匹配!
并确保它位于行尾:
[[ $(nc -v -z 192.168.8.216 9100 2>&1) =~ succeeded\!$ ]] && echo "Yes"
答案 1 :(得分:0)
尝试使用退出状态:
nc -v -z 192.168.8.216 9100 && echo 'Yes' || echo 'No'