if 조건에서 오류 메시지를 /dev/null로 리디렉션 [닫기]

if 조건에서 오류 메시지를 /dev/null로 리디렉션 [닫기]

나는 다음과 같은 if진술을 가지고 있습니다 :

if [ "$sourcelast" = "$maxhostlast" ] || [ "$sourcelast" = "$minhostlast" ] || [ "$sourcelast" < "$maxhostlast" ] || [ "$sourcelast" > "$minhostlast" ] ;then ... fi

/dev/null이제 오류가 발생할 때마다 오류 메시지가 전송되기를 원합니다.

어떻게 해야 하나요?

답변1

계속하기 전에 구문을 수정해야 합니다. ><이전 테스트의 비교 연산자가 아닌 쉘 리디렉션 연산자입니다 [...].\<일부 쉘에서는 이를 이스케이프 처리 하고 \>문자열 비교를 보관할 수 있습니다., 또는 새로운 테스트를 사용하십시오 [[...]].

이 경우에는 수치 비교를 하려는 것처럼 들리므로 표준 연산자 -lt, -le, -gt, 를 사용해야 합니다 -ge.

if [ "$sourcelast" = "$maxhostlast" ]   ||
   [ "$sourcelast" = "$minhostlast" ]   ||
   [ "$sourcelast" -lt "$maxhostlast" ] ||
   [ "$sourcelast" -gt "$minhostlast" ]
then
  : "Do something"
fi

모든 조건에서 모든 오류 메시지를 리디렉션하려면 해당 메시지를 서브셸로 래핑하면 됩니다.

if (
     [ "$sourcelast" = "$maxhostlast" ]   ||
     [ "$sourcelast" = "$minhostlast" ]   ||
     [ "$sourcelast" -lt "$maxhostlast" ] ||
     [ "$sourcelast" -gt "$minhostlast" ]
   ) 2>/dev/null
then
  : "Do something"
fi

관련 정보