我有一个 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
}