Как отключить предупреждения GNU dc?

Как отключить предупреждения GNU dc?

Когда в dc выполняются какие-то недопустимые или неопределенные команды, он обычно просто выводит предупреждение. Пример:

cp
dc: stack empty

Это хорошо в большинстве случаев, однако есть случаи, когда это раздражает, так как желаемое действие на самом деле работает. Рассмотрим этот пример:

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

Видите? Даже если я попытаюсь использовать другой регистр, а не те, что указаны в руководстве, он все равно будет работать. («официально» 256, но как вообще можно использовать нулевой байт?)

Даже если это, возможно, не всегда хорошая идея, я бы хотел, чтобы 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предупреждает о наличии проблемы.) Какой результат он выдает?

dcне распознает utf-8, работает с байтами. Utf-8 почти, но не совсем совместим с 8-битными (ascii-подобными) кодировками.

видеть:https://www.youtube.com/watch?v=MijmeoH9LT4(компьютерфил на utf-8).

Связанный контент