bash脚本中的((num#Hour))是什么意思?

莫森·阿巴西(Mohsen abasi)

我有一个bash脚本,其中包含以下2行:

Hour=$(date +"%H")
Hour=$((10#$Hour))

第2行做什么?

jesse_b

10#告诉它使用基地10扩大数量:

前导0的常量被解释为八进制数。前导“ 0x”或“ 0X”表示十六进制。否则,数字采用[base#] n的形式,其中可选的底数是2到64之间的十进制数,代表算术底数,而n是该底数中的数字。如果省略了base#,则使用以10为基数。当指定n时,大于9的数字依次由小写字母,大写字母“ @”和“ _”表示。如果base小于或等于36,则小写字母和大写字母可以互换使用,以表示10到35之间的数字。

例子:

基数16:

$ echo $((16#A))
10

基数8:

$ echo $((8#12))
10

基数2:

$ echo $((2#1010))
10

正如steeldriver指出的那样,很可能这样做是为了处理date命令中任何潜在的前导零,但是对于最新版本的GNU date,可以使用以下命令更轻松地完成此操作: date +%-H

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章