Dc

如何抑制 GNU dc 警告?

  • April 15, 2017

當在 dc 中執行一些無效或未定義的命令時,它通常只是列印一個警告。例子:

cp
dc: stack empty

大多數時候這很好,但是,在某些情況下,這很煩人,因為所需的操作確實有效。考慮這個例子:

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

看?即使我嘗試使用手冊中的其他寄存器,它仍然有效。(“正式”為 256,但您甚至應該如何使用 NUL 字節?)

即使可能並不總是一個好主意,我希望 dc 現在在某些腳本中向我顯示此類警告。

如何使 dc 不列印警告?

錯誤是因為多字節字元,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 上的電腦愛好者)。

引用自:https://unix.stackexchange.com/questions/359212