我正在尝试这个简单的脚本,但不知何故我每次都多了 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)
关于linux - 试图在 Shell 脚本 $(date +%j) 中找到确切的剩余天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27910551/