Como posso suprimir os avisos do GNU dc?

Como posso suprimir os avisos do GNU dc?

Quando alguns comandos inválidos ou indefinidos são executados em dc, geralmente apenas imprime um aviso. Exemplo:

cp
dc: stack empty

Isso é bom na maioria das vezes, no entanto, há casos em que é irritante, pois a ação desejada realmente funciona. Considere este exemplo:

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

Ver? Mesmo se eu tentar usar outro registro que não os do manual, ele ainda funciona. ("oficialmente" 256, mas como você deve usar o byte NUL?)

Mesmo que nem sempre seja uma boa ideia, gostaria que o DC agora me mostrasse esses avisos em alguns scripts.

Como posso fazer com que o DC não imprima avisos?

Responder1

Os erros são por causa dos caracteres multibyte, Gnu (e acho que todos os Unixes modernos) usa utf-8.

Portanto

dc <<< "5 6+s¢l¥p"é equivalente a dc <<< "5 6+s¢l¢p". O primeiro byte de ¢ e ¥ é igual e é usado como endereço do registrador. O segundo byte produz o erro.

veja a saída deod

#↳ 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

Portanto o erro é válido e não deve ser ignorado.


Experimente este caso de teste. dc <<< "4s¢11s¥l¢p"Qual resultado você espera? ( dcavisa que há um problema.) Qual resultado ele produz?

dcnão tem reconhecimento de utf-8, ele funciona em bytes. Utf-8 é quase, mas não totalmente compatível com codificações de 8 bits (semelhantes a ASCII).

ver:https://www.youtube.com/watch?v=MijmeoH9LT4(computerófilo em utf-8).

informação relacionada