系统:
- Ubuntu 22.04.3 LTS
- GNU bash,版本 5.1.16(1)-release (x86_64-pc-linux-gnu)
- 公元前 1.07.1
观察:
ibase
和均未obase
设置。
echo "A0" | bc
90
echo "B0" | bc
90
echo "X0" | bc
90
问题: 为什么默认情况下bc
将字母字符解释为9
s ?为什么这里不最好显示错误消息?
答案1
从man bc
GNU 系统(GNU bc
1.07 或更高版本):
一个简单的表达式只是一个常数。
bc
使用由变量 指定的当前输入基数将常量转换为内部十进制数ibase
。 (函数中有一个例外。) 的合法值为ibase
2 到 36。(大于 16 的基数是扩展。)
将超出此范围的值分配给ibase
将得到 2 或 36 的值。输入数字可能包含字符 0-9 和 AZ。 (注意:它们必须是大写字母。小写字母是变量名称。)无论 的值如何,单位数字始终具有该数字的值ibase
。 (即 A = 10。)对于多位数字,更改所有大于或等于值的bc
输入数字。这使得该数字始终是输入基数中最大的 3 位数字。ibase
ibase-1
ZZZ
(强调我的。)