나는 다음과 같은 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