我有一个包含以下两行的 bash 脚本:
Hour=$(date +"%H")
Hour=$((10#$Hour))
2号线是做什么的?
答案1
告诉它10#
使用基数 10 扩展数字:
以 0 开头的常量被解释为八进制数。前导“0x”或“0X”表示十六进制。否则,数字采用 [base#]n 形式,其中可选基数是表示算术基数的 2 到 64 之间的十进制数,n 是该基数中的数字。如果省略 base#,则使用基数 10。指定 n 时,大于 9 的数字按小写字母、大写字母、“@”和“_”的顺序表示。如果底数小于或等于 36,则小写和大写字母可以互换使用来表示 10 到 35 之间的数字。
例子:
基地 16:
$ echo $((16#A))
10
基地8:
$ echo $((8#12))
10
基地2:
$ echo $((2#1010))
10
正如 Steeldriver 指出的那样,这样做可能是为了处理 date 命令中任何潜在的前导零,但使用最新版本的 GNU date 可以更轻松地使用: date +%-H