将错误重定向到 /dev/null

将错误重定向到 /dev/null

我有一个 shell 脚本,其中包含以下行

COMPRESS_OPTION=`which compress`

我们的服务器中没有compress安装实用程序,因此会出现错误

which: no compress in (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/oracle/bin)

屏幕上。所以我尝试了

COMPRESS_OPTION=`which compress 2>/dev/null`

即使这样我也会在屏幕上看到错误。

答案1

不要使用which,使用POSIX标准command -v。例如:

COMPRESS_OPTION="$(command -v compress)"
[ $? != 0 ] && echo "compress not found" || echo "compress is $COMPRESS_OPTION"

如果您不想更改which脚本中的所有实例,请在开头附近添加如下所示的函数:

which() {
  local w status
  w="$(command -v "$1")"
  status=$?
  [ -n "$w" ] && echo "$w"
  return $status
}

相关内容