#!/bin/sh set -e POLLING_FREQUENCY=1 alias date='printf "[%s] " "$(date +%Y-%m-%dT%T)"' # ISO 8601 ! battery >/dev/null 2>&1 \ && ! printf "%s: Unable to get battery status on this system.\n" "$0" \ 1>&2 current_level="$(battery)" previous_level="$current_level" date; printf "Current level: %d%%\n" "$current_level" while true; do current_level="$(battery)" date; if ! strcmp "$current_level" "$previous_level"; then printf '%s: %s%% -> %s%%\n' "$( test "$current_level" -lt "$previous_level" \ && printf 'Discharged' \ || printf ' Charged')" \ "$previous_level" "$current_level" previous_level=$current_level fi sleep "$POLLING_FREQUENCY" done