/dev/null へのエラーリダイレクト [閉じる]

/dev/null へのエラーリダイレクト [閉じる]

次の行を含むシェルスクリプトがあります

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

それを使用しないでwhichPOSIX標準を使用してください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
}

関連情報