Linux 正在尝试在Shell脚本$(date+;%j)中查找确切的剩余天数

Linux 正在尝试在Shell脚本$(date+;%j)中查找确切的剩余天数,linux,shell,date,unix,Linux,Shell,Date,Unix,我正在尝试这个简单的脚本,但不知何故,每次我都会额外获得2天: #!/bin/bash date=$(date +%j) remaining="$(( 365 - $date))" echo $remaining 2015年1月12日,我还有355天,而现在应该是353天 日期,一切正常。输出的日期编号前有一个前导零: $ date +%j 012 这意味着数字将被解释为八进制,八进制012等于十进制10(这就是为什么它被2关闭)。您可以手动指定基数以覆盖默认解释: date=$(date

我正在尝试这个简单的脚本,但不知何故,每次我都会额外获得2天:

#!/bin/bash
date=$(date +%j)
remaining="$(( 365 - $date))"
echo $remaining
2015年1月12日,我还有355天,而现在应该是353天


日期,一切正常。

输出的日期编号前有一个前导零:

$ date +%j
012
这意味着数字将被解释为八进制,八进制012等于十进制10(这就是为什么它被2关闭)。您可以手动指定基数以覆盖默认解释:

date=$(date +%j)
remaining="$(( 365 - 10#$date))"
echo "$remaining"
今天,1月12日是353

作为补充说明,如果要获取当前年份的总天数而不是硬编码365,可以使用:

days_this_year=$(date -d "$(date +%Y)/12/31" +%j)

以前导零输出日数:

$ date +%j
012
这意味着数字将被解释为八进制,八进制012等于十进制10(这就是为什么它被2关闭)。您可以手动指定基数以覆盖默认解释:

date=$(date +%j)
remaining="$(( 365 - 10#$date))"
echo "$remaining"
今天,1月12日是353

作为补充说明,如果要获取当前年份的总天数而不是硬编码365,可以使用:

days_this_year=$(date -d "$(date +%Y)/12/31" +%j)

闰年是怎么回事?他们还有366天
剩余=$((10#$(日期-d“Dec 31”+%j)-10#$(日期+%j))
——与地区相关的闰年有哪些?他们还有366天
剩余=$((10#$(日期-d“Dec 31”+%j)-10#$(日期+%j))
——取决于区域设置