我对以下代码片段感到困惑:
#!/bin/bash
H=$(date +%H);
if (( 10#$H > 5 ))
then
# do something
else
# do something else
fi
Run Code Online (Sandbox Code Playgroud)
(( 10#$H > 5 ))上面代码片段的含义是什么?
tom*_*fic 11
该10#$H装置使用基座10扩大的数量.
这可能是为了从日期中删除任何前导零,因为bash将解释基数8(八进制)中的数字.
例:
$ echo "$(( 08 < 5 ))"
bash: 08: value too great for base (error token is "08")
Run Code Online (Sandbox Code Playgroud)
算术评估:具有前导的常量
0被解释为八进制数. 前导0x或0X表示十六进制.否则,数字采取的形式[base#]n,其中base是之间的十进制数2和64表示算术基和n是在一个数base.如果base#省略,则使用base10.大于的数字9由小写字母,大写字母@和_按顺序表示.如果base小于或等于36,则可以互换地使用小写和大写字母来表示10到35之间的数字.资源:
man bash