date-calc.sh

来自「Shall高级编程」· Shell 代码 · 共 43 行

SH
43
字号
#!/bin/bash# date-calc.sh# Author: Nathan Coulter# Used in ABS Guide with permission (thanks!).MPHR=60    # Minutes per hour.HPD=24     # Hours per day.diff () {        printf '%s' $(( $(date -u -d"$TARGET" +%s) -                        $(date -u -d"$CURRENT" +%s)))#                       %d = day of month.}CURRENT=$(date -u -d '2007-09-01 17:30:24' '+%F %T.%N %Z')TARGET=$(date -u -d'2007-12-25 12:30:00' '+%F %T.%N %Z')# %F = full date, %T = %H:%M:%S, %N = nanoseconds, %Z = time zone.printf '\nIn 2007, %s ' \       "$(date -d"$CURRENT +        $(( $(diff) /$MPHR /$MPHR /$HPD / 2 )) days" '+%d %B')" #       %B = name of month                ^ halfwayprintf 'was halfway between %s ' "$(date -d"$CURRENT" '+%d %B')"printf 'and %s\n' "$(date -d"$TARGET" '+%d %B')"printf '\nOn %s at %s, there were\n' \        $(date -u -d"$CURRENT" +%F) $(date -u -d"$CURRENT" +%T)DAYS=$(( $(diff) / $MPHR / $MPHR / $HPD ))CURRENT=$(date -d"$CURRENT +$DAYS days" '+%F %T.%N %Z')HOURS=$(( $(diff) / $MPHR / $MPHR ))CURRENT=$(date -d"$CURRENT +$HOURS hours" '+%F %T.%N %Z')MINUTES=$(( $(diff) / $MPHR ))CURRENT=$(date -d"$CURRENT +$MINUTES minutes" '+%F %T.%N %Z')printf '%s days, %s hours, ' "$DAYS" "$HOURS"printf '%s minutes, and %s seconds ' "$MINUTES" "$(diff)"printf 'until Christmas Dinner!\n\n'#  Exercise:#  --------#  Rewrite the diff () function to accept passed parameters,#+ rather than using global variables.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?