/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
}

관련 정보