`if` 语句中的“>/dev/null 2>&1”

mib*_*zer 8 shell io-redirection

我不明白下面的if条件。我知道这/dev/null 2 > &1是将输出发送到错误流(如果我错了,请纠正我)。但是当它处于某种if状态时我不明白

if /usr/bin/egrep -e "$param1" -e "$param2" -e "param3" ${file} > /dev/null 2>&1
then 
bla bla
Run Code Online (Sandbox Code Playgroud)

dan*_*ann 17

if只是感兴趣上的grep的退出代码(无论它发现了一些线相匹配的条件下),但不grep命令的输出,因此它重定向所有输出到/ dev / null,这意味着不通。

此重定向发生在两个部分:

  • > /dev/null 将标准输出重定向到任何地方,即 egrep 通常输出的行
  • 2>&1将错误输出也重定向到与标准输出相同的位置,即 /dev/null;这是为了抑制来自 egrep 的错误消息。