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

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

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

if /usr/bin/egrep -e "$param1" -e "$param2" -e "param3" ${file} > /dev/null 2>&1
then 
bla bla

答案1

它只if对 grep 的退出代码感兴趣(是否找到某些与条件匹配的行),而不是 grep 命令的输出,因此它将所有输出重定向到 /dev/null,这意味着无处可去。

此重定向分两部分进行:

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

相关内容