¿Cómo puedo suprimir las advertencias de GNU dc?

¿Cómo puedo suprimir las advertencias de GNU dc?

Cuando se ejecutan algunos comandos no válidos o no definidos en dc, generalmente solo imprime una advertencia. Ejemplo:

cp
dc: stack empty

Esto es bueno la mayor parte del tiempo, sin embargo, hay casos en los que resulta molesto ya que la acción deseada realmente funciona. Considere este ejemplo:

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

¿Ver? Incluso si intento utilizar otro registro distinto a los del manual, sigue funcionando. ("oficialmente" 256, pero ¿cómo se supone que debes usar el byte NUL?)

Aunque quizás no siempre sea una buena idea, me gustaría que DC me muestre ahora dichas advertencias en algunos scripts.

¿Cómo puedo hacer que DC no imprima advertencias?

Respuesta1

Los errores se deben a los caracteres multibyte, Gnu (y creo que todos los Unixes modernos) usan utf-8.

Por lo tanto

dc <<< "5 6+s¢l¥p"es equivalente a dc <<< "5 6+s¢l¢p". El primer byte de ¢ y ¥ es el mismo y se utiliza como dirección del registro. El segundo byte produce el error.

ver salida 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

Por lo tanto, el error es válido y no debe ignorarse.


Pruebe este caso de prueba, dc <<< "4s¢11s¥l¢p"¿qué resultado espera? ( dcadvierte que hay un problema). ¿Qué resultado produce?

dcNo es compatible con utf-8, funciona en bytes. Utf-8 es casi, pero no del todo, compatible con codificaciones de 8 bits (similares a ASCII).

ver:https://www.youtube.com/watch?v=MijmeoH9LT4(informático en utf-8).

información relacionada