#!/bin/sh set -eu usage() { cat <<-'EOF' Usage: clock [-o FILE] [--] CMD... EOF } OUTPUT=/dev/stdout while getopts 'o:' flag; do case "$flag" in (o) OUTPUT="$OPTARG" ;; (*) usage >&2 exit 2 ;; esac done shift $((OPTIND - 1)) STATUS_F="$(mkstemp)" trap 'rm -f "$STATUS_F"' EXIT START="$(now -E)" statusf "$STATUS_F" "$@" END="$(now -E)" printf '%s %s' "$END" "$START" | awk '{ printf "%f\n", $1 - $2 }' > "$OUTPUT" exit "$(cat "$STATUS_F")"