如何抑制 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(我認為所有現代 Unixes)都使用 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 上的電腦愛好者)。

相關內容