Dc
如何抑制 GNU dc 警告?
當在 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 上的電腦愛好者)。