GNU dc 경고를 억제하는 방법은 무엇입니까?

GNU dc 경고를 억제하는 방법은 무엇입니까?

dc에서 유효하지 않거나 정의되지 않은 명령을 실행하면 일반적으로 경고만 인쇄됩니다. 예:

cp
dc: stack empty

대부분의 경우에는 문제가 없지만 필요한 작업이 실제로 작동할 때 짜증나는 상황이 있습니다. 다음 예를 고려하십시오.

5 6+sИlИp
dc: 0230 unimplemented
dc: 0230 unimplemented
11

바라보다? 매뉴얼에 있는 레지스터가 아닌 다른 레지스터를 사용해봐도 여전히 작동합니다. ("공식적으로는" 256인데 NUL 바이트를 어떻게 사용할 수 있나요?)

항상 좋은 생각은 아닐 수도 있지만 이제 dc가 특정 스크립트에서 그러한 경고를 표시했으면 합니다.

DC에서 경고가 인쇄되는 것을 방지하는 방법은 무엇입니까?

답변1

이러한 오류는 Gnu(그리고 내 생각에 모든 최신 Unix)가 utf-8을 사용하는 멀티바이트 문자로 인해 발생합니다.

그래서

dc <<< "5 6+s¢l¥p"$와 $ 의 dc <<< "5 6+s¢l¢p"첫 번째 바이트는 동일하며 레지스터의 주소로 사용됩니다. 두 번째 바이트에서는 오류가 발생합니다.

출력 보기od

#↳ od -ta -to1 <<< "5 6+s¢l¥p"
0000000   5  sp   6   +   s   B   "   l   B   %   p  nl
        065 040 066 053 163 302 242 154 302 245 160 012

따라서 이 오류는 유효하므로 무시해서는 안 됩니다.


이 테스트 사례를 시도해 보세요. dc <<< "4s¢11s¥l¢p"어떤 결과를 기대하시나요? ( dc경고에 문제가 있습니다.) 어떤 출력이 생성됩니까?

dcUTF-8은 지원되지 않으며 바이트와 함께 작동합니다. utf-8은 8비트(ascii와 유사한) 인코딩과 거의 호환되지만 완전히 호환되지는 않습니다.

바라보다:https://www.youtube.com/watch?v=MijmeoH9LT4(utf-8의 컴퓨터 괴짜).

관련 정보