You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Bash错误‘56949f: value too great for base’

Bash数值解析错误解决

问题

运行Bash代码时出现错误:line 36: 56949f: value too great for base (error token is "56949f")
代码用于定义颜色数组并引用变量,预期输出为#56949f,已知需要强制十进制解析但不清楚设置位置,求解决。

原始代码

rosepine=("191724" "1f1d2e" "26233a" "6e6a86" "908caa" "e0def4" "eb6f92" "f6c177" "ebbcba" "31748f" "9ccfd8" "c4a7e7" "21202e" "403d52" "524f67")
rosepinemoon=("232136" "2a273f" "393552" "6e6a86" "908caa" "e0def4" "eb6f92" "f6c177" "ea9a97" "3e8fb0" "9ccfd8" "c4a7e7" "2a283e" "44415a" "56526e")
rosepinedawn=("faf4ed" "fffaf3" "f2e9e1" "9893a5" "797593" "575279" "b4637a" "ea9d34" "d7827e" "286983" "56949f" "907aa9" "f4ede8" "dfdad9" "cecacd")

base=0 
surface=1
overlay=2
muted=3
subtle=4
text=5
love=6
gold=7
rose=8
pine=9
foam=10
iris=11
hltlow=12
hltmed=13
hlthigh=14

#test colours
show_colour() {
    
    perl -e 'foreach $a(@ARGV){print "\e[48:2::".join(":",unpack("C*",pack("H*",$a)))."\m \e[49m "};print "\n"' "$@"
}

theme="rosepinedawn"
basec="text"
outlinec="subtle"
wheelc="foam"
xbc="'#$[$theme[$[$basec]]]'"
xoc="'#$[$theme[$[$outlinec]]]'"
xwc="'#$[$theme[$[$wheelc]]]'"


echo $xwc

错误原因

$[ ... ]是Bash的旧式算术扩展语法,会将内部内容当作数值计算。当解析$theme[$[$wheelc]]时,$wheelc对应的值是10,因此会解析为$rosepinedawn[10],其值为56949f。Bash看到包含f的字符串,会尝试按十六进制解析,但十六进制数必须以0x开头,因此触发"数值超出基数范围"的错误。

解决方法

不需要使用算术扩展,改用间接变量引用来获取动态数组的元素:

将最后三行变量赋值修改为:

xbc="#${!theme[$basec]}"
xoc="#${!theme[$outlinec]}"
xwc="#${!theme[$wheelc]}"

或者使用eval(注意转义):

xbc="#$(eval echo \${$theme[$basec]})"
xoc="#$(eval echo \${$theme[$outlinec]})"
xwc="#$(eval echo \${$theme[$wheelc]})"

修改后执行echo $xwc,即可得到预期输出#56949f。


内容的提问来源于stack exchange,提问作者Hari Shankar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 21:01:44