bash脚本中的'(((10#$ H> 5)))是什么意思?

时间:2019-01-07 10:37:55

标签: linux bash shell

我对以下代码段感到困惑:

Object

以上代码段中的#!/bin/bash H=$(date +%H); if (( 10#$H > 5 )) then # do something else # do something else fi 是什么意思?

1 个答案:

答案 0 :(得分:11)

10#$H表示以10为底扩展数字。

由于bash会解释以8为底的数字(八进制),因此这样做可能是为了删除日期中的前导零。

示例:

$ echo "$(( 08 < 5 ))"
bash: 08: value too great for base (error token is "08")
  

算术评估:带有前导0的常量被解释为八进制数。前导0x0X表示十六进制。否则,数字采用[base#]n的形式,其中base是介于264之间的十进制数字,表示          算术基和n是该base中的数字。如果省略base#,则使用基数10。大于9的数字依次由小写字母,大写字母@_表示。如果base小于或等于36,则小写字母和大写字母可以互换使用,以表示10到35之间的数字。

     

来源:man bash