⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 alarm.awk

📁 gawk: linux下资料处理工具
💻 AWK
字号:
# alarm.awk --- set an alarm## Requires gettimeofday library function## Arnold Robbins, arnold@skeeve.com, Public Domain# May 1993# usage: alarm time [ "message" [ count [ delay ] ] ]BEGIN    \{    # Initial argument sanity checking    usage1 = "usage: alarm time ['message' [count [delay]]]"    usage2 = sprintf("\t(%s) time ::= hh:mm", ARGV[1])    if (ARGC < 2) {        print usage1 > "/dev/stderr"        print usage2 > "/dev/stderr"        exit 1    } else if (ARGC == 5) {        delay = ARGV[4] + 0        count = ARGV[3] + 0        message = ARGV[2]    } else if (ARGC == 4) {        count = ARGV[3] + 0        message = ARGV[2]    } else if (ARGC == 3) {        message = ARGV[2]    } else if (ARGV[1] !~ /[0-9]?[0-9]:[0-9][0-9]/) {        print usage1 > "/dev/stderr"        print usage2 > "/dev/stderr"        exit 1    }    # set defaults for once we reach the desired time    if (delay == 0)        delay = 180    # 3 minutes    if (count == 0)        count = 5    if (message == "")        message = sprintf("\aIt is now %s!\a", ARGV[1])    else if (index(message, "\a") == 0)        message = "\a" message "\a"    # split up alarm time    split(ARGV[1], atime, ":")    hour = atime[1] + 0    # force numeric    minute = atime[2] + 0  # force numeric    # get current broken down time    gettimeofday(now)    # if time given is 12-hour hours and it's after that    # hour, e.g., `alarm 5:30' at 9 a.m. means 5:30 p.m.,    # then add 12 to real hour    if (hour < 12 && now["hour"] > hour)        hour += 12    # set target time in seconds since midnight    target = (hour * 60 * 60) + (minute * 60)    # get current time in seconds since midnight    current = (now["hour"] * 60 * 60) + \               (now["minute"] * 60) + now["second"]    # how long to sleep for    naptime = target - current    if (naptime <= 0) {        print "time is in the past!" > "/dev/stderr"        exit 1    }    # zzzzzz..... go away if interrupted    if (system(sprintf("sleep %d", naptime)) != 0)        exit 1    # time to notify!    command = sprintf("sleep %d", delay)    for (i = 1; i <= count; i++) {        print message        # if sleep command interrupted, go away        if (system(command) != 0)            break    }    exit 0}

⌨️ 快捷键说明

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