fal*_*uio 1 unix linux shell date
我正在尝试这个简单的脚本,但不知何故我每次额外获得2天:
#!/bin/bash
date=$(date +%j)
remaining="$(( 365 - $date))"
echo $remaining
Run Code Online (Sandbox Code Playgroud)
2015年1月12日,我剩下355天,而应该是353天.
日期和一切都很好.
日期编号以前导零输出:
$ date +%j
012
Run Code Online (Sandbox Code Playgroud)
这意味着该数字将被解释为八进制,八进制012等于十进制10(这就是为什么它被2关闭).您可以手动指定基数来覆盖默认解释:
date=$(date +%j)
remaining="$(( 365 - 10#$date))"
echo "$remaining"
Run Code Online (Sandbox Code Playgroud)
1月12日今天给出353.
作为旁注,如果您想获得当前年份的总天数而不是硬编码365,您可以使用:
days_this_year=$(date -d "$(date +%Y)/12/31" +%j)
Run Code Online (Sandbox Code Playgroud)