Bash 如何禁用命令发送的错误消息;平;?

Bash 如何禁用命令发送的错误消息;平;?,bash,shell,Bash,Shell,我使用bash脚本编写了一个简单的ping清理程序。我还使用grep命令过滤掉我想要的结果。问题是,无论我尝试了什么grep命令,控制台都会不断打印错误消息:“ping:recvmsg:No route to host”。我试图将输出写入一个文件,文件中没有错误消息,但它们仍然出现在控制台上。我想知道是什么原因导致控制台打印出这样的错误消息,以及如何禁用它,谢谢 这是我写的剧本 #/bin/bash 以美元为单位的ip(序号1254);做 #ping-c110.11.1.$ip | grep-v

我使用bash脚本编写了一个简单的ping清理程序。我还使用grep命令过滤掉我想要的结果。问题是,无论我尝试了什么grep命令,控制台都会不断打印错误消息:“ping:recvmsg:No route to host”。我试图将输出写入一个文件,文件中没有错误消息,但它们仍然出现在控制台上。我想知道是什么原因导致控制台打印出这样的错误消息,以及如何禁用它,谢谢

这是我写的剧本

#/bin/bash
以美元为单位的ip(序号1254);做
#ping-c110.11.1.$ip | grep-v“recvmsg”| grep“字节来自”| cut-d“-f4 | cut-d”:“-f1&
ping-c110.11.1.$ip | grep-v“recvmsg”| grep-v“ping”| grep“字节自”| cut-d“-f4 | cut-d”:“-f1 | sort-d>>报告&
完成
等待
下面是错误消息

ping: recvmsg: No route to host

您可以将重定向器用于stderr(标准错误),您只需将其放在命令的末尾
2>error.log

#!/bin/bash
for ip in $(seq 1 254); do
#ping -c 1 10.11.1.$ip | grep -v "recvmsg" | grep "bytes from" | cut -d " " -f 4 | cut -d ":" -f 1 &
ping -c 1 10.11.1.$ip 2> error.log | grep -v "recvmsg" |grep -v "ping" |  grep "bytes from"  | cut -d " " -f 4 | cut -d ":" -f 1| sort -d >> report   &
done
wait

使用外壳支架扩展
{1..254}
而不是
seq
命令。