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


Answers:


24

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


2
在这种特殊情况下,值得一提的是(至少在最新的GNU版本中date)可以使用printf样式-格式修饰符在源头抑制前导零+%-H
steeldriver


@don_crissti-是的,那是我找不到的
steeldriver
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.