Bash算术$ number!= $((数字))

Oli*_*ted 6 bash

尝试执行简单的bash脚本以将前面的0的数字递增1时,原始数字的解释不正确.

#!/bin/bash
number=0026
echo $number
echo $((number))
echo $((number+1))
Run Code Online (Sandbox Code Playgroud)

执行此命令时,我得到输出:

0026
22
23
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

gle*_*man 4

强制以 10 为基数表示:

$ echo $((10#$number))
26
$ echo $((10#$number + 1))
27
Run Code Online (Sandbox Code Playgroud)

回复小次郎的评论:

$ something=08
$ echo $((something))
bash: 08: value too great for base (error token is "08")
$ echo $(($something))
bash: 08: value too great for base (error token is "08")
$ echo $((10#something))
bash: 10#something: value too great for base (error token is "10#something")
$ echo $((10#$something))
8
$ echo $((08))
bash: 08: value too great for base (error token is "08")
$ echo $((10#08))
8

$ echo $(( 16#10 ))
16
$ echo $(( 16#f ))
15
$ echo $(( 16#10 - 1 ))
15
Run Code Online (Sandbox Code Playgroud)