`10#N` 的含义

Tim*_*Tim 6 bash

吉米写道

在这种情况下,我可能最终会使用临时目录:

for file in [[:digit:]]*.png; do
    echo mv $file tmp/$(printf %04d $((10#${file%.png}+1))).png
done
Run Code Online (Sandbox Code Playgroud)

重要的部分是10#N强制 bash 解释000N为 just N,否则前导零表示八进制数。

10#N算术扩展的一部分,还是其他什么?

这是在 Bash 手册或 POSIX 规范中提到的吗?我没找到。

cuo*_*glm 13

10#N或一般形式[base#]nwhere2 <= base <= 64将解释n为该基数中的数字。

bash说明书,部分壳牌算术提到这一点。

注意,不是由POSIX,只在指定的该功能bashksh和它的衍生物,zsh具有2和36之间的碱基。


D.S*_*D.S 8

bash 手册的算术评估部分,

带有前导 0 的常量被解释为八进制数。前导 0x 或 0X 表示十六进制。否则,数字采用 [base#]n 形式,其中 base 是表示算术基数的 2 到 64 之间的十进制数,n 是该基数中的数字。如果省略 base#,则使用基数 10。大于 9 的数字按小写字母、大写字母、@ 和 _ 的顺序表示。如果基数小于或等于 36,小写和大写字母可以互换使用来表示 10 到 35 之间的数字。